线程池

为什么用线程池:
  第一:降低源消耗。    线程的创建和销毁的开销是巨大的。线程调度导致上下文切换也会有开销。并且一个系统所能够创建的线程总是受限于该线程拥有的处理器数目。
  第二:提高响速度。当任到达,任可以不需要等到线建就能立即行。
  第三:提高线程的可管理性线程是稀缺源,如果无限制地建,不会消耗系统资源,会降低系定性,使用线程池可以一分配、调优控。但是,要做到合理利用。 线程池可以提供定时、定期、单线程、并发数控制等功能。比如通过ScheduledThreadPool线程池来执行S秒后,每隔N秒执行一次的任务。
  第四:控制线程池的并发数可以有效的避免大量的线程池争夺CPU资源而造成堵塞。
  没有必要每次都创建,因为run方法都是一样的。创建太多CPU来不及切换。
四种创建线程池的方式:
  1. newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
  2. newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
  3. newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
  4. newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
posted @ 2019-07-08 15:33  TangXinPing  阅读(126)  评论(0编辑  收藏  举报