采用Executors工厂类的静态方法来创建进程池
- 常用静态方法如下
newCachedThreadPool():具有缓存功能的线程池
newFixedThreadPool():可重用,具有固定数目的线程池
newSingleThreadPool():创建一个只有单线程的线程池,相当于newFixedThreadPool(1)
newScheduleThreadPool(int corePollSize):创建一个指定线程数目的可以在制定延迟后执行的线程池。
.....
- 前三个方法返回一个ExecutorService对象,该对象表示一个线程池,可以执行Runnable或者Callable对象的线程。后一个返回一个ScheduleExecutorService(extend ExecutorService)线程池,可以在指定延迟后执行线程。
- ExecutorService表示尽快执行的线程的线程池,只要有空闲线程,就立即执行线程。
- 用完一个线程后,应该调用shutdown方法来关闭线程池,该方法使得线程池不在接受新任务,但会把以前的人物执行完。另外也可以使用shutdownNow()方法来关闭线程池,该方法会试图停止当前正在执行的线程。
- 步骤:1.创建一个ExecutorService对象,表示线程池。2.创建一个Runnable或者Callable的实例。3.调用submit来提交线程任务。4.当不想提交任务时,使用shutdown来关闭线程池。
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class SaleWindow {
public static void main(String[] args) {
ExecutorService pool = Executors.newFixedThreadPool(5);
Runnable target = () -> {
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + " " + i);
}
};
pool.submit(target);
pool.submit(target);
pool.submit(target);
pool.shutdown();
}
}
ForkJoinPool并行计算
待续。。
网友评论