Java 线程池入门

采用Executors工厂类的静态方法来创建进程池

  1. 常用静态方法如下
newCachedThreadPool():具有缓存功能的线程池
newFixedThreadPool():可重用,具有固定数目的线程池
newSingleThreadPool():创建一个只有单线程的线程池,相当于newFixedThreadPool(1)
newScheduleThreadPool(int corePollSize):创建一个指定线程数目的可以在制定延迟后执行的线程池。
.....
  1. 前三个方法返回一个ExecutorService对象,该对象表示一个线程池,可以执行Runnable或者Callable对象的线程。后一个返回一个ScheduleExecutorService(extend ExecutorService)线程池,可以在指定延迟后执行线程。
  2. ExecutorService表示尽快执行的线程的线程池,只要有空闲线程,就立即执行线程。
  3. 用完一个线程后,应该调用shutdown方法来关闭线程池,该方法使得线程池不在接受新任务,但会把以前的人物执行完。另外也可以使用shutdownNow()方法来关闭线程池,该方法会试图停止当前正在执行的线程。
  4. 步骤: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并行计算

待续。。

你可能感兴趣的:(Java 线程池入门)