线程池

线程池

时间 2018年6月13日 23:03:06;

复习了一下基础的JAVA线程池知识

  1. Single Thread Executor :只有一个线程的线程池,因此所有提交的任务是顺序执行 。

    Executors.newSingleThreadExecuto
    
  2. Cached Thread Pool: 线程池里有很多线程需要同时执行,老的可用线程将被新的任务触发重新执行,如果超过60S没有执行,那么将被终止并将从池中删除。

    Executors.newCachedThreadPool()
    
  3. Fixed Thread Pool : 拥有固定线程数的线程池,如果没有任务执行,那么线程会一直等待 。

    Executors.newFixedThreadPool(4)
    

    在构造函数中的参数4是线程池的大小,你可以随意设置,也可以和cpu的核数量保持一致,获取cpu的核数量 :

    int cpuNums = Runtime.getRuntime().availableProcessors();
    
  4. Scheduled Thread Pool : 用来调度即将执行的任务的线程池,可能是不是直接执行, 每隔多久执行一次... (策略型的 )。

Executors.newScheduledThreadPool() 
  1. Single Thread Scheduled Pool : 只有一个线程,用来调度任务在指定时间执行 。

    Executors.newSingleThreadScheduledExecutor()
    
runnable 和 callable的区别
  • runnable的run方法不会有任何返回结果,所以主线程无法获得任务线程的返回值。callable的call方法可以返会结果(Future),但是主线程在获取结果时会被阻塞,需要任务线程返回才能获得结果

你可能感兴趣的:(线程池)