黑马程序员技术交流社区

标题: 线程池技术。 [打印本页]

作者: gzbbxu    时间: 2013-6-30 08:42
标题: 线程池技术。
交通管理系统中。张老师,提到了线程池。
  1. ExecutorService pool = Executors.newSingleThreadExecutor();
  2.                 pool.execute(new Runnable() {
  3.                         public void run() {
  4.                                 for (int i = 1; i < 1000; i++) {
  5.                                         try {
  6.                                                 Thread.sleep((new Random().nextInt(10) + 1) * 1000);
  7.                                         } catch (InterruptedException e) {
  8.                                                 e.printStackTrace();
  9.                                         }
  10.                                         vechicles.add(Road.this.name + "_" + i);
  11.                                 }
  12.                         }

  13.                 });
复制代码
如果不用线程池,直接添加到集合中,对象是永远也创建不成功的,或者说一直在创建,为什么添加了现在用了这个就可以了呢?
作者: gzbbxu    时间: 2013-6-30 08:47
单任务线程池

作者: zms2100    时间: 2013-6-30 08:58
菜鸟的我表示没看懂,Lz指的是什么对象创建不成功、不能直接添加到集合中???
打给简短的代码比方来看下,O(∩_∩)O~
作者: gzbbxu    时间: 2013-6-30 09:03
zms2100 发表于 2013-6-30 08:58
菜鸟的我表示没看懂,Lz指的是什么对象创建不成功、不能直接添加到集合中???
打给简短的代码比方来看下 ...

我不明白的是,他这个方法放到构造方法中,不也是创建不出来对象吗?
作者: gzbbxu    时间: 2013-6-30 09:04
gzbbxu 发表于 2013-6-30 09:03
我不明白的是,他这个方法放到构造方法中,不也是创建不出来对象吗?

7k面试题,你看看。第7个视频第10分钟
作者: gzbbxu    时间: 2013-6-30 09:05
zms2100 发表于 2013-6-30 08:58
菜鸟的我表示没看懂,Lz指的是什么对象创建不成功、不能直接添加到集合中???
打给简短的代码比方来看下 ...

7k面试题,你看看。第7个视频第10分钟
作者: zms2100    时间: 2013-6-30 09:27
因为在构造方法中创建内部类,而这个内部类调用了局部变量String name,按道理需要用final修饰(这个在视频有说也有水印备注),但是老师选择了vechicles.add(Road.this.name + "_" + i);, 指定外部类名与this(指向外部类对象)的解决方式。
你说不能创建对象,测试下是否是因为内部类要访问局部变量而没有 final修饰或类名.this.变量名 修饰的方式,从而导致无法编译通过。
作者: L.I.F.E    时间: 2013-6-30 09:28
Road这个类是用来模拟路上行驶的车,生成随机行驶的车。也就是在某一时间,可能有一个也可能有两个或多个。
在后面讲的MainClass类中,会调用Road并传递某条路,比如N2S,作为参数。这样就会调用Road的构造方法,让他形成N2S方向上的N辆车。
张老师通过在构造方法中设置随机数,来让线程停止一个随机的时间。老师意思是我调用Road生成车得时候,不能卡住很长时间,一直等着他生成对象,所以,在构造方法中用单任务线程池,让它自己慢慢玩,来生成车。

作者: gzbbxu    时间: 2013-6-30 13:29
L.I.F.E 发表于 2013-6-30 09:28
Road这个类是用来模拟路上行驶的车,生成随机行驶的车。也就是在某一时间,可能有一个也可能有两个或多个。 ...

懂了,谢谢。




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