0

hi all

I am doing this thread program and when i run it is not giving any output, can someone tell me why no output is shown.

public class RelayRaceDemo {

     public static  Thread runner[];

    public static void main(String[]args){

        RelayRacer rr = new RelayRacer();

        ThreadGroup country[] = new ThreadGroup[5];
        country[0] = new ThreadGroup("Tinidad and Tobago");
        country[1] = new ThreadGroup("Jamiaca");
        country[2] = new ThreadGroup("St Vincent");
        country[3] = new ThreadGroup("Barbados");
        country[4] = new ThreadGroup("Bahamas");

         runner = new Thread[7];
        Runnable relayRacer = null;
        runner[0]= new Thread(country[0],relayRacer,"Trinidad racer 1");
        runner[1]= new Thread(country[0],relayRacer,"Trinidad racer 2");
        runner[2]= new Thread(country[1],relayRacer,"Tobago racer 1");
        runner[3]= new Thread(country[1],relayRacer,"Tobago racer 2");
        runner[4]= new Thread(country[2],relayRacer,"Bahamas racer 1");
        runner[5]= new Thread(country[2],relayRacer,"Barbados racer 1");
        runner[6]= new Thread(country[3],relayRacer,"St Vincent racer 1");

        runner[0].start();;
        runner[2].start();
        runner[4].start();
        runner[6].start();

    }

    public   class RelayRacer implements Runnable{

   public void relayRace(){

       boolean winnerYet = false;

       for(int distance=1; distance <=40; distance++){

                System.out.println("Current runner"+ Thread.currentThread().getName() + " Has run "+
                        distance + "metres");

                if(Thread.currentThread().getName().equals("Trinidad and Toabgo racer 1") && distance == 20)
                {
                         threadJoin(distance, 0);
                }
                else if(Thread.currentThread().getName().equals("Jamiaca racer 1") && distance ==20){
                        threadJoin(distance, 2);
                }
                else if(Thread.currentThread().getName().equals("St Vincent racer 1")&& distance == 20){
                    threadJoin(distance, 2);
                }
                else if(Thread.currentThread().getName().equals("Barbados racer 1 ") && distance ==20){

                    threadJoin(distance, 3);
                }
                else if(Thread.currentThread().getName().equals("Bahamas racer 1") && distance == 20){
                    threadJoin(distance, 4);
                }  

                if(isGroupRaceWinner (distance)){

                    System.out.println("Winning Country is"+Thread.currentThread().getThreadGroup());
                }

       }

   }

            public void threadJoin(int distance, int nextRunner){

                 //RelayRacerDemo
            }

            public boolean isGroupRaceWinner(int distance){
                    boolean winnerYet = false;

                if(distance == 40 && winnerYet == false){
                    winnerYet = true;
                    return true;
                }
                else{
                    return false;
                }

            }

   @Override
            public void run(){
                this.relayRace();
            }

}
3
Contributors
3
Replies
16
Views
5 Months
Discussion Span
Last Post by JamesCherrill
0

I agree that the naming is a bit confusing, but the code for RelayRacer looks valid to me as it is. Just changing the name won't fix anything.

Edited by JamesCherrill

Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.