求大神解答下。。模拟红绿灯问题。。

写一个程序,模拟红绿灯路口车辆通行.
要求:
1. 十字路口,只能横向或者纵向直行,不能拐弯,路口各有一个红绿灯
2. 红灯5s, 绿灯4s, 黄灯1s ,要求每隔1秒打印横向的红绿灯情况
3. 车子随机间隔1-3秒之后会横向通过马路, 打印车辆是等待还是通行
4. 行人随机5-6秒之后纵向通过马路,打印行人是否需要等待还是通行
5. 开始的红绿灯状态可以自定义

大神按照自己理解贴个代码哈。。。3q.....

4个线程:
主线程。负责主体逻辑的更新和控制
红绿灯线程,负责红绿灯状态机管理
行人线程,负责按照随机时间范围产生行人,添加到主线程行人队列
车辆线程,负责按照随机时间范围产生车辆,添加到主线程车辆队列

主线程每秒打印一次当前的行人/车辆/红绿灯状态,并且计算等待时间。

昨天忘记帐号,写了代码没贴上。今天贴上..

[code="java"]
import java.util.Random;
import java.util.Timer;

public class TrafficLight {

private static Timer _lightTimer;
// 红灯5s,  绿灯4s, 黄灯1s.
// 横向灯颜色范围(数字0~3绿灯, 4: 黄灯, 5~9:红灯)
private static int _horizontalLight = 0;
private static Boolean _hasCar = false;
private static Boolean _hasPeople = false;

public static void main(String[] args){
    _lightTimer  = new Timer();
    _lightTimer.schedule(new PrintLight(), 1000, 1000);

    // 初始状态.
    System.out.println("【横向交通灯】绿色");

    Random rnd = new Random();
    while(true){
        // 车子.
        if(!_hasCar){
            _hasCar = true;
            int carSeconds = rnd.nextInt(3) +1;
            Timer t = new Timer();
            t.schedule(new PrintCar(), carSeconds*1000);
        }

        // 行人.
        if(!_hasPeople){
            _hasPeople = true;
            int peopleSeconds = rnd.nextInt(2) +5;
            Timer t = new Timer();
            t.schedule(new PrintPeople(), peopleSeconds*1000);
        }
    }
}

static class PrintCar extends java.util.TimerTask{
    @Override
    public void run() {
        System.out.println("<车子>" + (_horizontalLight>=4? "不通过" : "通过"));
        _hasCar =false;
    }
}

static class PrintPeople extends java.util.TimerTask{
    @Override
    public void run() { 
        System.out.println("<行人>" + (_horizontalLight>=5? "通过" : "不通过"));
        _hasPeople = false;
    }
}

 static class PrintLight extends java.util.TimerTask{ 
        @Override
        public void run() { 
            _horizontalLight++;
            if(_horizontalLight >=10)
                _horizontalLight = 0;

            // TODO Auto-generated method stub
            if(_horizontalLight <=3){
                System.out.println("【横向交通灯】绿灯");
            }
            else if(_horizontalLight == 4){
                System.out.println("【横向交通灯】黄灯");
            }
            else if(_horizontalLight >=5){
                System.out.println("【横向交通灯】红灯");
            }
        }
 }

}

[/code]