Executors默认线程池
代码实现
-
1.创建空的连接池
创建Executors中的静态方法
-
2.需要执行任务时,创建线程对象。任务执行完毕,线程对象归还给池子
submit方法,有线程对象则直接拿来用,没有则自动创建线程对象
-
3.所有任务执行完毕,关闭连接池
shutdown方法
static ExecutorService newCachedThreadPool()创建一个默认的线程池
package com.cmy.myThreadpool;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* @author 陈明勇
*/
public class MyThreadPoolDemo {
public static void main(String[] args) throws InterruptedException {
// 1.创建默认的线程池对象,池子中默认为空,默认最多的可以容纳int类型的最大值
ExecutorService executorService = Executors.newCachedThreadPool();
// Executors --可以帮助我们创建线程池对象
// executorService -- 可以帮我们控制线程池
executorService.submit(() -> {
System.out.println(Thread.currentThread().getName() + "在执行了");
});
Thread.sleep(2000);
executorService.submit(() -> {
System.out.println(Thread.currentThread().getName() + "在执行了");
});
// 关闭连接池
executorService.shutdown();
}
}
static ExecutorService newFixedThreadPool(int nThreads) 创建一个指定最多线程数量的线程池
package com.cmy.myThreadpool;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* @author 陈明勇
*/
public class MyThreadPoolDemo2 {
public static void main(String[] args) throws InterruptedException {
// 参数不是初始值,而是最大值
ExecutorService executorService = Executors.newFixedThreadPool(10);
executorService.submit(() -> {
System.out.println(Thread.currentThread().getName() + "执行了...");
});
executorService.submit(() -> {
System.out.println(Thread.currentThread().getName() + "执行了...");
});
executorService.shutdown();
}
}
newFixedThreadPool(10),这里的10指的是最大值,而不是初始值

本文介绍了如何使用Executors创建默认线程池(newCachedThreadPool)和固定线程数池(newFixedThreadPool),展示了如何提交任务并关闭线程池。重点在于理解线程池的原理和常见用法。
541

被折叠的 条评论
为什么被折叠?



