美文网首页
Java 线程池入门

Java 线程池入门

作者: 有苦向瓜诉说 | 来源:发表于2018-01-15 18:39 被阅读43次

    采用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 线程池入门

          本文链接:https://www.haomeiwen.com/subject/qgjebxtx.html