实例代码
- ExecutorService executor = Executors.newSingleThreadExecutor();
- for (int i = 0; i < 5; i++) {
- executor.execute(() -> {
- System.out.println(Thread.currentThread().getName()+"正在执行");
- });
- }
- 复制代码
运行功效:
行使场景
合用于串行执利用命的场景,一个使命一个使命地执行。
newScheduledThreadPool
- public ScheduledThreadPoolExecutor(int corePoolSize) {
- super(corePoolSize, Integer.MAX_VALUE, 0, NANOSECONDS,
- new DelayedWorkQueue());
- }
- 复制代码
线程池特点
- 最大线程数为Integer.MAX_VALUE
- 阻塞行列是DelayedWorkQueue
- keepAliveTime为0
- scheduleAtFixedRate() :按某种速度周期执行
- scheduleWithFixedDelay():在某个耽误后执行
事变机制
- 添加一个使命
- 线程池中的线程从 DelayQueue 中取使命
- 线程从 DelayQueue 中获取 time 大于便是当前时刻的task
- 执行完后修改这个 task 的 time 为下次被执行的时刻
- 这个 task 放回DelayQueue行列中
实例代码
- /**
- 建设一个给定初始耽误的隔断性的使命,之后的下次执行时刻是上一次使命从执行到竣事所必要的时刻+* 给定的隔断时刻
- */
- ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
- scheduledExecutorService.scheduleWithFixedDelay(()->{
- System.out.println("current Time" + System.currentTimeMillis());
- System.out.println(Thread.currentThread().getName()+"正在执行");
- }, 1, 3, TimeUnit.SECONDS);
- 复制代码
运行功效:
- /**
- 建设一个给定初始耽误的隔断性的使命,之后的每次使命执行时刻为 初始耽误 + N * delay(隔断)
- */
- ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
- scheduledExecutorService.scheduleAtFixedRate(()->{
- System.out.println("current Time" + System.currentTimeMillis());
- System.out.println(Thread.currentThread().getName()+"正在执行");
- }, 1, 3, TimeUnit.SECONDS);;
- 复制代码
行使场景
周期性执利用命的场景,必要限定线程数目的场景
回到口试题:说说几种常见的线程池及行使场景?
答复这四种经典线程池 :newFixedThreadPool,newSingleThreadExecutor,newCachedThreadPool,newScheduledThreadPool,分线程池特点,事变机制,行使场景分隔描写,再说明也许存在的题目,好比newFixedThreadPool内存飙升题目 即可
线程池状态
线程池有这几个状态:RUNNING,SHUTDOWN,STOP,TIDYING,TERMINATED。
- //线程池状态
- private static final int RUNNING = -1 << COUNT_BITS;
- private static final int SHUTDOWN = 0 << COUNT_BITS;
- private static final int STOP = 1 << COUNT_BITS;
- private static final int TIDYING = 2 << COUNT_BITS;
- private static final int TERMINATED = 3 << COUNT_BITS;
- 复制代码
线程池各个状态切换图:
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|