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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Alex shaw 中级黑马   /  2013-3-21 19:29  /  1440 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1.         public Road(String name)
  2.         {
  3.                 this.name = name;
  4.                 //创建一个使用单个 worker 线程的 Executor
  5.                 ExecutorService pool = Executors.newSingleThreadExecutor();
  6.                 pool.execute(new Runnable()
  7.                 {

  8.                         @Override
  9.                         public void run() {
  10.                                 for(int i = 0 ; i < 100 ; i++)
  11.                                 {
  12.                                         try {
  13.                                                 Thread.sleep(new Random().nextInt(1000));
  14.                                                 list.add(Road.this.name+":"+i);
  15.                                         } catch (InterruptedException e) {
  16.                                                 e.printStackTrace();
  17.                                         }
  18.                                 }
  19.                         }
  20.                        
  21.                 });
  22.         }
复制代码
这是road类,张孝祥老师视频中讲到的,为什么不能再构造方法中直接Thread.sleep
而是非要用这种方法,另外 内部类访问外部类的同名变量是不是就是外部类.this.属性名

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-22 12:46

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

3 个回复

倒序浏览
这是road类,张孝祥老师视频中讲到的,为什么不能再构造方法中直接Thread.sleep
这是项项目的要求:1到10秒路上随机产生一辆车。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
        public Road(String name)
        {
                this.name = name;
                //创建一个使用单个 worker 线程的 Executor
                ExecutorService pool = Executors.newSingleThreadExecutor();
                pool.execute(new Runnable()
                {

                        @Override
                        public void run() {
                                for(int i = 0 ; i < 100 ; i++)
                                {
                                        try {
                                                Thread.sleep(new Random().nextInt(1000));//Random方法指的是在某个范围之内随机产生一个数,如果在构造方法中直接  Thread.sleep的话就与项目要求不符合了。
                                                list.add(Road.this.name+":"+i);//这里是一个匿名内部类,而内部类想要访问外部类中的成员格式就是:外部类名.this.。这是张孝祥老师特意帮我们回顾知识点。
                                        } catch (InterruptedException e) {
                                                e.printStackTrace();
                                        }
                                }
                        }
                        
                });
        }

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
如果你直接用Thread.sleep(inteage);只能固定一个时间点,与张老师的要求不符合,
要求:汽车是在(1~10秒内)随机出现,
Thread.sleep(new Random().nextInt(1000));

内部类访问外部类的同名变量就是     外部类.this.属性名

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

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