package com.itcast.traffic;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;


/**
 * 每个Road对象代表一条路线,总共有12条路线,即系统中总共要产生12个Road对象实例
 * 每条路线上随机增加新的车辆,增加到一个集合中保存
 * 每条路线每隔一秒都会检查控制本路线的灯是否为绿,是则将本路线保存车的集合中的第一辆车移除,即表示穿过了路口
 * @author Administrator
 *
 */
public class Road {
	
	private List<String> vehicles = new ArrayList<String>();

	private String name = null;

	public Road(final String name){
		this.name = name;
		
		//模拟车辆不断随机上路的过程
		ExecutorService pool = Executors.newSingleThreadExecutor();
		pool.execute(new Runnable(){
			@Override
			public void run() {
				for(int i = 1;i<1000;i++){
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					vehicles.add(Road.this.name + "_" + i);
				}
			}
			
		});
		
		//每隔一秒检查对应的灯是否为绿,是则放行一辆车
		ScheduledExecutorService timer = Executors.newScheduledThreadPool(1);
		timer.scheduleAtFixedRate(
				new Runnable(){
					@Override
					public void run() {
						if(vehicles.size()>0){
							boolean lighted = Lamp.valueOf(name).isLighted();;
							if(lighted){
								System.out.println(vehicles.remove(0) + " is traversing");
							}
						}
					}
					
				}, 
				1, 
				1, 
				TimeUnit.SECONDS);
	}
 
}
最近下载更多
ming_123_9715  LV23 2021年10月22日
与你同行2019  LV11 2021年2月26日
2196316269  LV10 2021年2月25日
superadmin001  LV1 2021年2月12日
qiuqiu555  LV1 2020年11月15日
ListenMuDi  LV2 2020年6月14日
小糊涂  LV1 2020年6月3日
茅屋为秋风所破歌  LV1 2020年4月5日
20181107  LV4 2019年12月14日
2818821836  LV11 2019年4月17日
最近浏览更多
uid0901  LV2 4月2日
y1214435276  LV9 2023年7月4日
GT2002220  LV2 2023年6月9日
微信网友_6508798513811456  LV5 2023年6月7日
泓鼎168  LV20 2023年3月31日
15342201772  LV9 2022年12月10日
未交定金 2022年10月26日
暂无贡献等级
王俊杰1 2022年9月22日
暂无贡献等级
zhaoyangwfd  LV17 2022年6月24日
Code_Pianist  LV2 2022年6月17日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友