Click here to Skip to main content
15,614,138 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
See more:
Consider the traffic signalling below (Fig 1). Create a traffic signal class, consisting of a Boolean array of three values, Red, green and yellow such that, only one can be true and others false (Use circular queue). Generate four such traffic signal objects for the situation below (Fig 2), such that the traffic never comes to halt and there are no accidents. Note: In the moming Juanda Street East is high traffic (200 cars/minute) and same thing repeats in the evening on Juanda west street. Other streets have light

traffic (20 cars/ minute). 2000 cars standing in one street will be considered as

traffic jam.

What I have tried:

ublic class TrafficSignal implements Runnable {
    public enum Color {RED, ORANGE, GREEN}

    private Color color;

    private static volatile Color previous = Color.ORANGE;

    public TrafficSignal(Color color) {
        this.color = color;

    public synchronized void display() throws InterruptedException {
        switch (color) {
            case RED:
                while (previous != Color.ORANGE) wait();

            case ORANGE:
                while (previous != Color.GREEN) wait();

            case GREEN:
                while (previous != Color.RED) wait();

        previous = color;

    public void run() {
        while (true) {
            try {
            } catch (InterruptedException e) {

    public static void main(String[] args) {
        new Thread(new TrafficSignal(TrafficSignal.Color.GREEN)).start();
        new Thread(new TrafficSignal(TrafficSignal.Color.ORANGE)).start();
        new Thread(new TrafficSignal(TrafficSignal.Color.RED)).start();
Updated 15-Dec-22 4:06am
Dave Kreskowiak 15-Dec-22 9:54am    
...AND??? YOu never asked a question or described a problem you're having.

1 solution

Read the question again, carefully - there is very little there that matches anything in your code. Even the colours are wrong!

While we are more than willing to help those that are stuck, that doesn't mean that we are here to do it all for you! We can't do all the work, you are either getting paid for this, or it's part of your grades and it wouldn't be at all fair for us to do it all for you.

So we need you to do the work, and we will help you when you get stuck. That doesn't mean we will give you a step by step solution you can hand in!
Start by explaining where you are at the moment, and what the next step in the process is. Then tell us what you have tried to get that next step working, and what happened when you did.

If you are having problems getting started at all, then this may help: How to Write Code to Solve a Problem, A Beginner's Guide[^]
Share this answer

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900