Java线程并发库之线程池

来源:互联网 发布:万户网络oa 编辑:程序博客网 时间:2024/05/06 15:25

线程池

 

      线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程.每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中.如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙.如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值.超过最大值的线程可以排队,但他们要等到其他线程完成后才启动

 

Executors

  • newFixedThreadPool(int nThreads)   创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程。
  • newSingleThreadExecutor()    创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。
  • newCachedThreadPool()    创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。
  • newScheduledThreadPool(int corePoolSize)     创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。

例:

   

    创建一个含有3个线程的线程池,这个线程池提交10个任务,每个任务执行5次