摘要: 原理 通常情况下,我们不会手动停止一个线程,而是允许线程运行到结束,然后让它自然停止。但是依然会有许多特殊的情况需要我们提前停止线程,比如:用户突然关闭程序,或程序运行出错重启等。 在这种情况下,即将停止的线程在很多业务场景下仍然很有价值。尤其是我们想写一个健壮性很好,能够安全应对各种场景的程序时, 阅读全文
posted @ 2022-03-06 10:41 学无终 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 线程池关闭的方式 使用10个固定线程池创建100个任务 ExecutorService service = Executors.newFixedThreadPool(10); for (int i = 0; i < 100; i++) { service.execute(new Task()); } 阅读全文
posted @ 2022-03-06 10:38 学无终 阅读(987) 评论(0) 推荐(0) 编辑
摘要: 创建线程池的2种方式 手动创建线程池 new ThreadPoolExecutor(); Executors工具类创建线程池 Executors创建线程池的问题 使用LinkedBlockingQueue 作为队列的有FixedThreadPool、SingleThreadPoolExecutor, 阅读全文
posted @ 2022-03-06 10:37 学无终 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 线程池拒绝提交任务的2种情况 调用 shutdown 等方法关闭线程池后,即便此时可能线程池内部依然有没执行完的任务正在执行,但是由于线程池已经关闭,此时如果再向线程池内提交任务,就会遭到拒绝 线程池没有能力继续处理新提交的任务,也就是工作已经非常饱和的时候 java 在 ThreadPoolExe 阅读全文
posted @ 2022-03-06 10:34 学无终 阅读(6012) 评论(0) 推荐(0) 编辑
摘要: 为什么使用线程池 前面的基础中发现创建线程的方式只有一种使用Thread方式,线程启动调用start方法,运行完销毁,任务少没问题,任务多了就会耗资源 for (int i = 0; i < 10000; i++) { Thread thread = new Thread(new Task()); 阅读全文
posted @ 2022-03-06 10:33 学无终 阅读(174) 评论(0) 推荐(0) 编辑