创建线程池推荐方法

package zte.thread;

import java.util.LinkedList;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingDeque;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

import com.google.common.util.concurrent.ThreadFactoryBuilder;

/**
 * Created by  on 2019/11/22.
 **/
public class ThreadPoolExecutorTest {
    public static void main(String[] args) {
        /*
        *
        * public ThreadPoolExecutor(int corePoolSize,-->必填:核心线程数,当线程数<核心线程,来任务优先创建线程,已存在线程一致存活
                              int maximumPoolSize,--> 必填:当线程数>=corePoolSize,且任务队列已满时。线程池会创建新线程来处理任务;
                                                            当线程数=maxPoolSize,且任务队列已满时,线程池会交由handler处理
                              long keepAliveTime,--> 必填:线程空闲时保活时间,当线程空闲时间达到keepAliveTime时,线程会退出,直到线程数量=corePoolSize
                              TimeUnit unit,--> 必填:保活时间单位TimeUnit.
                              BlockingQueue<Runnable> workQueue,-->必填:核心线程满新任务添加到队列中,
                                                                    LinkedBlockingQueue():本身无界,但可以设置数量LinkedBlockingQueue(3)
                                                                    ArrayBlockingQueue():有界队列,必须设置容量
                              ThreadFactory threadFactory,-->new ThreadFactoryBuilder()
                                                                .setPriority(Thread.NORM_PRIORITY)-->优先级,优先级高优先获得操作系统资源
                                                                .setDaemon(false)-->设置线程是否为守护线程
                                                                .setNameFormat("线程号-%d")-->打印线程号
                                                                .build()
                              RejectedExecutionHandler handler)-->
        * */
        final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
                21, 210,
                5, TimeUnit.MINUTES,
                new LinkedBlockingQueue<>(3),
                new ThreadFactoryBuilder()
                        .setPriority(Thread.NORM_PRIORITY)
                        .setDaemon(false)
                        .setNameFormat("optical-pce-d-controller-%d")
                        .build()
        );
        threadPoolExecutor.allowCoreThreadTimeOut(true);//核心线程是否会被关闭。
        threadPoolExecutor.awaitTermination()
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿五~

我再马路边只收1分钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值