Java学习记录day21-线程池,Stream流

什么是线程池。

线程池:其实就是一个容纳多个线程的容器,其中的线程可以反复使用,
省去了频繁创建和销毁线程对象的操作,无需反复创建线程而消耗过多资源。

为什么要用线程池:
合理利用线程池能够带来三个好处
1.降低资源消耗。减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。
2.提高响应速度
3.提高线程的可管理性
线程池的核心思想:线程复用。同一个线程可以被重复使用。

线程池的创建方式一

线程池在Java中的代表: ExecutorService

创建线程池的API:
java.util.concurrent.Executors类下:
– public static ExecutorService newFixedThreadPool(int nThreads)`:
返回线程池对象。(创建的是有界线程池,也就是池中的线程个数可以指定最大数量)

往线程池ExecutorService中创建线程的API:
1.public Future submit(Runnable task)
2. Future submit(Callable task);
线程池启动后是不会死亡的,因为后续还要重复使用的。

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Demo1 {
    public static void main(String[] args) {
        //创建一个线程池
        ExecutorService pools = Executors.newFixedThreadPool(3);
        Runnable target = new MyRunnable();
  //加线程执行就好
        pools.submit(target);
        pools.submit(target);
        pools.submit(target);
  //重复调用上面一个线程
        pools.submit(target);
//等线程执行完后关闭线程
        pools.shutdown();
//  立即关闭线程,不管是不是执行完了
// pools.shutdown();

    }
}
class MyRunnable implements Runnable{
    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.println(Thread.currentThread().getName()+"=>"+i);
        }
    }
}

线程池的创建方式二

<

你可能感兴趣的:(JAVA)