线程池 朱雀 2022-01-07 09:37 117阅读 0赞 ## 四种线程池 ## Executors有四个线程池, 单一线程池,newSingleThreadExecutor 固定线程池,newFixedThreadPool 缓冲线程池,newCachedThreadPool 周期线程池,newScheduledThreadPool ThreadPoolExecutor参数有核心线程数,最大线程数,线程空闲时间,时间单位,阻塞队列,线程工厂,拒绝策略 四种拒绝策略 AbortPolicy,中止策略,默认策略,抛出异常 DiscardPolicy,丢弃策略,和中止类似,丢弃任务,但是不抛出异常 DiscardOldestPolicy,丢弃最旧策略,丢弃最旧的任务 CallerRunsPolicy,调用者运行策略,当前线程执行任务 ## 线程池的关闭方式有几种,各自的区别是什么 ## 两种关闭方式 shutdown: 调用之后不允许继续往线程池内继续添加线程; 线程池的状态变为SHUTDOWN状态; 所有在调用shutdown()方法之前提交到ExecutorSrvice的任务都会执行; 一旦所有线程结束执行当前任务,ExecutorService才会真正关闭。 shutdownNow(): 该方法返回尚未执行的 task 的 List; 线程池的状态变为STOP状态; 阻止所有正在等待启动的任务, 并且停止当前正在执行的任务; 简单点来说,就是: shutdown()调用后,不可以再 submit 新的 task,已经 submit 的将继续执行 shutdownNow()调用后,试图停止当前正在执行的 task,并返回尚未执行的 task 的 list ## ThreadPoolExecutor ## 线程池初始化时,线程数为0,需要的时候创建核心线程,之后空闲了就保留,不会释放空闲线程。 核心线程用完了,加入阻塞队列;阻塞队列满了,创建最大线程;阻塞队列满了,启用拒绝策略。 最大线程空闲了,会释放。 举例 public static void main(String[] args) throws InterruptedException { ThreadPoolExecutor pool = new ThreadPoolExecutor(5, 10, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());; System.out.println(pool.getPoolSize());//0 for (int i = 0; i < 2; i++) { pool.submit(new Runnable() { @Override public void run() { System.out.println("hehe"); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } } }); } System.out.println(pool.getPoolSize());//2 Thread.sleep(4000); System.out.println(pool.getPoolSize());//2 }
相关 Java 线程池、Runnable线程池、Callable线程池 线程池: 其实就是一个容纳多个线程的容器,其中的线程可以反复的使用,省去了频繁创建和销毁过程对象的操作,无需反复创建线程面消耗过多资源。 为什么要用线程池: 合理 青旅半醒/ 2023年02月26日 12:30/ 0 赞/ 50 阅读
相关 线程、线程池 创建线程的3种方法: package com.frank.threadPool.createThread; / @author 小石潭记 布满荆棘的人生/ 2022年10月22日 04:27/ 0 赞/ 384 阅读
相关 线程池 1.所谓线程池,就是程序的初始化阶段,就预先创建一批线程,每个线程都做好准备干活; 2.然后有一个任务列表,一开始为空,当有任务来了,就往任务列表里面添加;这个任务列表 痛定思痛。/ 2022年06月13日 13:22/ 0 赞/ 328 阅读
相关 线程池 西施越溪女,明艳光云海 最近用线程池和不用线程池做了个速度的测试,在这里备注下: 结果是速度不相上下; public static void main(Str 妖狐艹你老母/ 2022年05月20日 02:35/ 0 赞/ 280 阅读
相关 线程池 线程池 Java里面线程池的顶级接口是 java.util.concurrent.Executor , 但是严格意义上讲 Executor并不是一个线程池,而只是一个 迈不过友情╰/ 2022年03月06日 14:34/ 0 赞/ 400 阅读
相关 线程池 线程池 > 从字面义上来讲,是指管理一组同构工作线程的资源池。线程池是与工作队列密切相关的,其中在工作队列中(Worker Queue)保存了所有等待执行的任务。工作者( 清疚/ 2021年12月11日 03:35/ 0 赞/ 386 阅读
相关 线程池 可preStart一个或全部core thread 0,小于core则来一个任务建一个线程(firstTask),队列,额外线程,拒绝 一个AtomicInteger的 今天药忘吃喽~/ 2021年11月23日 03:40/ 0 赞/ 410 阅读
相关 线程池 1、先创建线程池 import java.util.concurrent.ArrayBlockingQueue; import java.util.concu 拼搏现实的明天。/ 2021年11月09日 14:28/ 0 赞/ 420 阅读
还没有评论,来说两句吧...