黑马程序员技术交流社区

标题: 求大神解答。。交通灯的问题 [打印本页]

作者: 唐志海    时间: 2014-1-25 11:28
标题: 求大神解答。。交通灯的问题
本帖最后由 唐志海 于 2014-1-27 11:41 编辑

这边为什么要用到线程池呢??
  1. public class Road {
  2.         private List<String> vechicles = new ArrayList<String>();
  3.         
  4.         private String name =null;
  5.         public Road(String name){
  6.                 this.name = name;
  7.                
  8.                 //模拟车辆不断随机上路的过程               
  9.                 ExecutorService pool = Executors.newSingleThreadExecutor();
  10.                 pool.execute(new Runnable(){
  11.                         public void run(){
  12.                                 for(int i=1;i<1000;i++){
  13.                                         try {
  14.                                                 Thread.sleep((new Random().nextInt(10) + 1) * 1000);
  15.                                         } catch (InterruptedException e) {
  16.                                                 e.printStackTrace();
  17.                                         }
  18.                                         vechicles.add(Road.this.name + "_" + i);
  19.                                 }                                
  20.                         }
  21.                         
  22.                 });
复制代码



作者: 筱厸厸    时间: 2014-1-25 12:13
张孝祥老师这边用的是单线程池SingleThreadExecutor ,若果不用而是直接启动的话,那就是所有车辆出发数量得不到保障,对红绿灯就不好控制了
作者: 悟中生有    时间: 2014-1-27 15:50
用线程池可以更好的控制线程吧。
作者: 刘旭升    时间: 2014-1-27 17:05
线程池是新特性,所以它的出现和使用也是对多线程的优化和让大家去使用这个特性。很多方法都封装好了,不需要自己去写和实现了,可以提高不少效率。
让别人知道自己会这个(次要,面试却必要)
使用线程池,可以写成匿名内部类,其他功能需求调用线程池方法即可,达到了代码结构紧凑易读的效果。
【都是自己的理解,没有去查询更专业的回答,请楼主判断性看】




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2