java 线程池,四种

线程池解决的问题:手动创建线程,频繁的开启关闭线程会消耗更多资源,而线程池的引入则会避免这个问题。

// 创建一个可以根据需要创建新线程的线程池。最多可以创建int最大值的线程数量
public static  ExecutorService newCachedThreadPool() 
// 创建一个固定长度的线程池
public static ExecutorService newFixedThreadPool(int nThreads)  
// 创建单个线程的线程池
public static ExecutorService newSingleThreadExecutor()    
// 创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。
public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)   

声明线程池

ExecutorService executorService = Executors.newCachedThreadPool();

实现Runnable接口,创建线程任务

//提交线程任务
executorService.submit(new Runnable() {
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+"执行了");
    }
});

线程池对应参数:

public ThreadPoolExecutor(int corePoolSize,
                          int maximumPoolSize,
                          long keepAliveTime,
                          TimeUnit unit,
                          BlockingQueue<Runnable> workQueue,
                          ThreadFactory threadFactory,
                          RejectedExecutionHandler handler)
参数解释:
    corePoolSize - 核心线程数。
    maximumPoolSize - 最大线程数。
    keepAliveTime - 临时线程存活的时间。
    unit - keepAliveTime 时间单位。
    workQueue - 阻塞队列。
    threadFactory -  创建线程的工厂。
    handler -  如果超过最大线程数,的拒绝方案。 
  • 创建线程池的演示

ThreadPoolExecutor poolExecutor=new ThreadPoolExecutor(
    6, //核心线程数
    9, //最大线程数
    3, //空闲时间
    TimeUnit.SECONDS, //时间单位:秒
    new ArrayBlockingQueue<>(10),
    Executors.defaultThreadFactory(), //默认的工厂对象,由工厂对象帮我们生产线程
    new ThreadPoolExecutor.AbortPolicy() //拒绝的方式
); 
  • 拒绝策略

//用于被拒绝任务的处理程序,它将抛出 RejectedExecutionException.
static class ThreadPoolExecutor.AbortPolicy 
//用于被拒绝任务的处理程序,它直接在 execute 方法的调用线程中运行被拒绝的任务;如果执行程序已关闭,则会丢弃该任务。 
static class ThreadPoolExecutor.CallerRunsPolicy 
//用于被拒绝任务的处理程序,它放弃最旧的未处理请求,然后重试 execute;如果执行程序已关闭,则会丢弃该任务。
static class ThreadPoolExecutor.DiscardOldestPolicy 
//用于被拒绝任务的处理程序,默认情况下它将丢弃被拒绝的任务。
static class ThreadPoolExecutor.DiscardPolicy 

————————————————

版权声明:本文为优快云博主「道也自由」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.youkuaiyun.com/weixin_47873769/article/details/113624615

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值