zoukankan      html  css  js  c++  java
  • Thread 线程池

    Thread 线程池:

    当使用多个较短存活期的线程有利时,运用线程池技术可以发挥作用。运用这一技术时,不是为每个任务创建一个全新的线程,而可以从线程池中抽出线程,并分配给任务。
    当线程完成任务后,再把它放回到池中,并等待另一次分配。

    优点:

    线程池节省了虚拟机为每项短期工作创建全新线程的工作量。另外,它使得与线程的启动以及消亡后的清理相关的开销最小。创建一个线程池后,可以在不同的任务中循环使用池是的单个线程。
    通过线程池技术,可以减少反应的时间,因为线程已经得以构建,并已经启动,只是等待下一个任务而已。

    单线程池:newSingleThreadExecutor()

    可变大小线程池:newCachedThreadPool()

    可延迟线程池:newScheduledThreadPool(int corepoolsize)

    /**
    * 线程池中如果线程大小大于线程池数,则线程多的处于等待状态,当线程池中的线程结束后才会运行多余的线程
    */
    public class ThreadPoolTest {
    public static void main(String[] args){
    ExecutorService pool= Executors.newFixedThreadPool(2);//创建2个固定大小的线程池
    pool.execute(new Runnable() {
    @Override
    public void run() {
    int i=0;
    while (i<5){
    i++;
    System.out.println("线程1");
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
    });
    pool.execute(new Runnable() {
    @Override
    public void run() {
    int i=0;
    while (i<5){
    i++;
    System.out.println("线程2");
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
    });
    pool.execute(new Runnable() {
    @Override
    public void run() {
    int i=0;
    while (i<5){
    i++;
    System.out.println("线程3");
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
    });
    }
    }
  • 相关阅读:
    javascript基础学习(三)
    javascript基础学习(二)
    javascript基础学习(一)
    php base64_encode()函数
    php fsockopen()
    php parse_url()函数
    SPL 文件处理
    CSS position的absolute和relative的解析[转]
    HTML demo
    php PDO setFetchMode
  • 原文地址:https://www.cnblogs.com/feipengting/p/7550312.html
Copyright © 2011-2022 走看看