A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 绿影 黑马帝   /  2011-11-14 12:53  /  1994 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

仅供参考!
线程池就是一工厂不是,一个工人就是一个Thread,你可以用三种方式(见代码)决定请几个工人干活。如果有活了这些工人就开干(就是线程自动到线程池中去拿任务执行),如果没订单了,就没活可干了工人就休息着吃闲饭。如果你不想他们吃闲饭就赶走。(就用 threadPool.shutdown()关闭线程池)。
  1. //创建固定线程个数的线程池。
  2.             //ExecutorService threadPool = Executors.newFixedThreadPool(3);
  3.             //创建线程个数动态变化的线程池,有多少任务就多少线程,再来则动态增加。
  4.             //ExecutorService threadPool = Executors.newCachedThreadPool();
  5.             //创建单个线程的线程池,这个池子中的这个线程如果死了,就会自动创建一个新的Thread接替他。
  6.             ExecutorService threadPool = Executors.newSingleThreadExecutor();
复制代码

2 个回复

正序浏览
绿影 黑马帝 2011-11-21 19:29:02
藤椅
石宗银 发表于 2011-11-14 13:38
Executors.newFixedThreadPool(3);    固定线程数,随机指派某个线程去 完成当前的任务;当一个线程完了它 ...

恩 理解更清楚了!
回复 使用道具 举报
Executors.newFixedThreadPool(3);    固定线程数,随机指派某个线程去 完成当前的任务;当一个线程完了它的任务后,还有新任务没有被接收,则会去接受新任务
Executors.newCachedThreadPool();  动态生成线程来执行任务,,当有线程执行完它的任务后,且还有任务没被分配,则会去执行新任务,,如:有10个任务,可能只生成了
                                    6、7个线程,还有几个任务 是前面中执行完任务的线程在执行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马