美文网首页
2020-07-28JDK5.0之后新增的创建多线程的方式2

2020-07-28JDK5.0之后新增的创建多线程的方式2

作者: DM小强 | 来源:发表于2020-07-28 17:05 被阅读0次

    新增方式二:使用线程池

    线程池相关API

    JDK 5.0起提供了线程池相关API:ExecutorService 和 Executors
     ExecutorService:真正的线程池接口。常见子类ThreadPoolExecutor
     void execute(Runnable command) :执行任务/命令,没有返回值,一般用来执行
    Runnable
     <T> Future<T> submit(Callable<T> task):执行任务,有返回值,一般又来执行
    Callable
     void shutdown() :关闭连接池
     Executors:工具类、线程池的工厂类,用于创建并返回不同类型的线程池
     Executors.newCachedThreadPool():创建一个可根据需要创建新线程的线程池
     Executors.newFixedThreadPool(n); 创建一个可重用固定线程数的线程池
     Executors.newSingleThreadExecutor() :创建一个只有一个线程的线程池
     Executors.newScheduledThreadPool(n):创建一个线程池,它可安排在给定延迟后运
    行命令或者定期地执行。

    package com.dm.java1;
    
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.ThreadPoolExecutor;
    
    /**
     * 创建线程的方法四:使用线程池
     *
     * 好处:
     * 1.提高响应速度(减少了创建新线程的时间)
     * 2.降低资源消耗(重复利用线程池中的线程,不需要每次都创建)
     * 3.便于线程管理:
     *      corePoolSize:核心池的大小
     *      maximumPoolSize:最大线程数
     *      keepAliveTime:线程没有任务时最多保持多长时间后会终止
     *
     * @author JessieWu
     * @create 2020-07-28  17:45
     */
    
    class NumberThread implements Runnable{
        @Override
        public void run() {
            for (int i = 0; i <= 100; i++) {
                if (i % 2 == 0){
                    System.out.println(Thread.currentThread().getName() + ":" + i);
                }
            }
        }
    }
    
    
    public class ThreadPool {
        public static void main(String[] args) {
            //1.提供指定线程数量的线程池
            ExecutorService service = Executors.newFixedThreadPool(10);
    
            //设置线程池的属性
            ThreadPoolExecutor service1 = (ThreadPoolExecutor)service;
            service1.setCorePoolSize(15);
    
    
            //2.执行指定的线程的操作,需要提供实现Runnable接口或Callable接口实现类的对象
            service.execute(new NumberThread());//适合使用于Runnable
    //        service.submit();//适合使用于Callable
            //关闭连接池
            service.shutdown();
        }
    
    }
    
    
    

    相关文章

      网友评论

          本文标题:2020-07-28JDK5.0之后新增的创建多线程的方式2

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