黑马程序员技术交流社区
标题:
关于交通管理系统一个小问题
[打印本页]
作者:
一碗小米周
时间:
2013-9-22 19:58
标题:
关于交通管理系统一个小问题
本帖最后由 一碗小米周 于 2013-9-22 21:07 编辑
看了张老师的交通灯的视频,我想请问下各位,为什么Thread.sleep()不能直接放在构造方法中,需要独立创建一个线程?谢谢。
作者:
一碗小米周
时间:
2013-9-22 19:59
public class Road {
private List<String> vehicle = new ArrayList<String>();
private String name = null;
public Road(final String name){
this.name = name;
ExecutorService pool = Executors.newSingleThreadExecutor();
pool.execute(new Runnable() {
public void run() {
for(int i =1;i<100;i++){
try {
Thread.sleep((new Random().nextInt(10)+1)*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
vehicle.add(name+"--"+i);
}
}
});
复制代码
作者:
胡智
时间:
2013-9-22 20:41
Thread.sleep()是让运行该代码的线程暂停。构造函数是给类初始化的,只运行一次。把它放在构造函数里面,创建Road对象的时候,是主函数创建,主线程会暂停。主线程暂停了就不能运行其它的代码了。
在构造函数里面用线程池的技术,是建立完对象后,也同时建立了一个线程,然其运行我们想要它运行的代码。这就比你让Road类继承Thread类或实现Runnable方法,然后建立对象,然后启动线程要简便多了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2