用优雅的姿势使用和使用线程池
Posted zhuomuniao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用优雅的姿势使用和使用线程池相关的知识,希望对你有一定的参考价值。
1.使用线程池的目的:(1)减少系统维护线程的开销 (2)解耦合,运行和创建分开 (3)线程可以复用。
在线程池的编程模式下,任务是提交给整个线程池,而不是直接提交给某个线程,线程池在拿到任务后,就在内部寻找是否有空闲的线程,如果有,则将任务交给某个空闲的线程。以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。
同时我们需要知道一下两个内容:
01.ExecutorService是Java提供的用于管理线程池的类。该类的两个作用:控制线程数量和重用线程
02.Executors.newCacheThreadPool():可缓存线程池,先查看池中有没有以前建立的线程,如果有,就直接使用。如果没有,就建一个新的线程加入池中,缓存型池子通常用于执行一些生存期很短的异步型任务
线程池的创建和使用:
public class NewCachedThreadPoolTest { public static void main(String[] args) { // 创建一个可缓存线程池 ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); for (int i = 0; i < 10; i++) { try { // sleep可明显看到使用的是线程池里面以前的线程,没有创建新的线程 Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } cachedThreadPool.execute(new Runnable() { public void run() { // 打印正在执行的缓存线程信息 System.out.println(Thread.currentThread().getName() + "正在被执行"); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } }); } } }
以上是关于用优雅的姿势使用和使用线程池的主要内容,如果未能解决你的问题,请参考以下文章