本帖最后由 席杰 于 2014-8-6 20:29 编辑
import java.util.*;
import java.util.concurrent.*;
public class ShiYan {
private static String name="右行";
//定义车辆集合
private static List<String> vehicles=new ArrayList<String>();
//定义产生车辆的函数
public static void createVehicle(){
ExecutorService pool=Executors.newSingleThreadExecutor();
pool.execute(new Runnable(){
public void run(){
for(int i=0;i<1000;i++){
try {
Thread.sleep((new Random().nextInt(10)+1)*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
vehicles.add(name+i);
}
}
});
}
//定义控制车辆的函数
public static void controlVehicle(){
ScheduledExecutorService timer=Executors.newScheduledThreadPool(1);
timer.scheduleAtFixedRate(
new Runnable(){
public void run(){
//if(vehicles.size()>0){
if(true){
String vehiclesName=vehicles.remove(0);
System.out.println(vehiclesName+" 通过十字路口了!");
}
//}
}
},
1,
1,
TimeUnit.SECONDS
);
}
public static void main(String[] args) {
createVehicle();
controlVehicle();
}
}
这是学习交通灯管理系统遇到的问题,为什么去掉红色部分,就不会产生车辆通过的现象?
然而蓝色部分为true,条件一直满足应该这段程序一直都在运行,而产生车辆函数createVehicle(),一直在不定时的产生车辆,车辆集合vehicles应该是有车辆的,条件都满足,为什么System.out.println(vehiclesName+" 通过十字路口了!")而不能运行。
刚开始自己编完就出现了这个问题,想了半天也没查出原因,后来查看老师的程序才发现这好像出了问题,但是不能理解,求大神解释!谢谢了
|
|