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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gzbbxu 中级黑马   /  2013-6-30 08:42  /  1436 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

交通管理系统中。张老师,提到了线程池。
  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.                 });
复制代码
如果不用线程池,直接添加到集合中,对象是永远也创建不成功的,或者说一直在创建,为什么添加了现在用了这个就可以了呢?

评分

参与人数 1技术分 +1 收起 理由
刘凯 + 1 赞一个!

查看全部评分

8 个回复

倒序浏览
单任务线程池
回复 使用道具 举报
菜鸟的我表示没看懂,Lz指的是什么对象创建不成功、不能直接添加到集合中???
打给简短的代码比方来看下,O(∩_∩)O~
回复 使用道具 举报
zms2100 发表于 2013-6-30 08:58
菜鸟的我表示没看懂,Lz指的是什么对象创建不成功、不能直接添加到集合中???
打给简短的代码比方来看下 ...

我不明白的是,他这个方法放到构造方法中,不也是创建不出来对象吗?
回复 使用道具 举报
gzbbxu 发表于 2013-6-30 09:03
我不明白的是,他这个方法放到构造方法中,不也是创建不出来对象吗?

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

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

评分

参与人数 1技术分 +1 收起 理由
刘凯 + 1 赞一个!

查看全部评分

回复 使用道具 举报
gzbbxu 中级黑马 2013-6-30 13:29:24
9#
L.I.F.E 发表于 2013-6-30 09:28
Road这个类是用来模拟路上行驶的车,生成随机行驶的车。也就是在某一时间,可能有一个也可能有两个或多个。 ...

懂了,谢谢。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马