![](/img/trans.png)
[英]How do i switch traffic lights in java for each light should blow only for 3 seconds respectively using multithreading?
[英]traffic light program using java multithreading
我在两个地方(通过使用“->”来识别)中收到此“线程“主”中的异常java.lang.NullPointerException错误”,我已经跟踪了变量,但似乎找不到错误的地方。
//simulation.java
public class Simulation {
private Thread thread1, thread2, thread3, thread4;
public static void main(String[] args) {
Simulation s = new Simulation();
-> s.go();
}
public void Simulation(){
TrafficLight light = new TrafficLight();
RoadRunnable road1 = new RoadRunnable(1, light);
RoadRunnable road2 = new RoadRunnable(2, light);
RoadRunnable road3 = new RoadRunnable(3, light);
RoadRunnable road4 = new RoadRunnable(4, light);
road1.add(" ");
road2.add(" ");
road3.add(" ");
road4.add(" ");
thread1 = new Thread((Runnable) road1);
thread2 = new Thread((Runnable) road2);
thread3 = new Thread((Runnable) road3);
thread4 = new Thread((Runnable) road4);
}
public void go()
{
-> thread1.start();
thread2.start();
thread3.start();
thread4.start();
}
}
//roadrunnable.java
import java.util.LinkedList;
public class RoadRunnable extends TrafficLight implements Runnable {
private LinkedList<String> queue;
private int number;
private TrafficLight light;
public RoadRunnable(int roadNumber, TrafficLight aLight) {
number = roadNumber;
light = aLight;
queue = new LinkedList();
}
public void run() {
while (!queue.isEmpty()) {
light.turnGreen(number);
queue.remove();
}
}
public void add(String car) {
for (int i = 0; i < 10; i++) {
queue.add(car);
}
}
}
//trafficlight.java
public class TrafficLight {
private int rNumber;
public TrafficLight() {
}
public void turnGreen(int roadNumber) {
rNumber = roadNumber;
synchronized (this) {
System.out.print("Light turned green by road" + rNumber
+"\n"
+ "Waiting for road" + rNumber + "car to clear intersection \n");
for (int i = 10; (i >= 0); i--) {
System.out.print(i + " ");
try {
Thread.sleep(10);
} catch (InterruptedException ex) {
}
}
System.out.print("\n \n");
}
}
}
public void Simulation() {
}
这不是构造函数。 构造函数没有返回类型。 而是使用:
public Simulation() {
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.