java创建线程池
在Java中,可以使用ExecutorService接口和Executors类来创建线程池。
- 使用
Executors类的静态方法创建线程池:
// 创建一个固定大小的线程池,线程池中最多同时执行5个任务
ExecutorService executor = Executors.newFixedThreadPool(5);
// 创建一个单线程的线程池,只会同时执行一个任务
ExecutorService executor = Executors.newSingleThreadExecutor();
// 创建一个可根据需要创建新线程的线程池,线程池中最多可以同时执行Integer.MAX_VALUE个任务
ExecutorService executor = Executors.newCachedThreadPool();
// 创建一个固定大小的线程池,同时可以设置线程池中等待任务的队列大小
ExecutorService executor = Executors.newFixedThreadPool(5, new ArrayBlockingQueue<>(10));
- 使用
ExecutorService接口的实现类ThreadPoolExecutor直接创建线程池:
// 创建一个固定大小的线程池,线程池中最多同时执行5个任务
ExecutorService executor = new ThreadPoolExecutor(5, 5, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>());
// 创建一个单线程的线程池,只会同时执行一个任务
ExecutorService executor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>());
// 创建一个可根据需要创建新线程的线程池,线程池中最多可以同时执行Integer.MAX_VALUE个任务
ExecutorService executor = new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<>());
// 创建一个固定大小的线程池,同时可以设置线程池中等待任务的队列大小
ExecutorService executor = new ThreadPoolExecutor(5, 5, 0L, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(10));
- 使用线程池执行任务:
// 提交一个任务给线程池执行
executor.execute(new Runnable() {
@Override
public void run() {
// 任务的具体逻辑
}
});
// 提交一个有返回值的任务给线程池执行
Future<String> future = executor.submit(new Callable<String>() {
@Override
public String call() throws Exception {
// 任务的具体逻辑
return "result";
}
});
// 关闭线程池
executor.shutdown();
注意:在使用完线程池后,应该调用shutdown()方法来关闭线程池,否则线程池中的线程将一直保持活动状态
原文地址: http://www.cveoy.top/t/topic/ieNG 著作权归作者所有。请勿转载和采集!