Java并发工具类比如ExecutorService的使用场景和错误示例
Java并发工具类如ExecutorService
主要在多线程编程中用来管理和控制任务执行。以下是一些常见使用场景以及错误示例:
使用场景:
- 线程池:批量创建、管理多个线程。
- 任务分发:将一个或多个任务分配给线程执行。
- 阻塞和非阻塞操作:通过
ExecutorService
调用submit
,callAsync
, etc方法实现。
错误示例:
- 直接创建线程:
Thread myThread = new Thread(new Runnable() {
@Override
public void run() {
// 这里是你的代码,通常会引发同步问题
System.out.println("直接创建的线程运行了");
}
})));
myThread.start(); // 这会导致主线程阻塞
- 使用无限制的线程池:
以上内容主要针对ExecutorService executor = Executors.newUnboundedThreadPool();
// ...
executor.shutdownNow(); // 这会中断正在执行的任务,可能导致数据丢失或异常
executor.awaitTermination(1, TimeUnit.MINUTES)); // 这会等待线程池完全终止(所有任务已完成),可能会阻塞主线程
ExecutorService
的基本使用和可能出现的问题进行解释。
- 直接创建线程:
还没有评论,来说两句吧...