Cel:

  • Musze zrobic program który stworzy 10 watkow kazdy z nich ma wyswietlac co wylosowany czas z granicy 500-1000ms swój identyfikator i zwiekszac go o 1. Nastepnie z poziomu maina muszę sterować tak tymi wątkami że następny jest wstrzymany a poprzedni (ktory wczesniej byl wstrzymany) ma byc uruchomiony ponownie

Problem:

  • Mam 10 wątków, watki uruchamiaja sie co 1 sekunde~. ale nie umiem wstrzymywac je i uruchamiac z poziomu maina.
public class Watek implements Runnable {

    int id = 0;
    boolean koniec = false;

    public Watek() {

    }

    public void zwolnij(){
        koniec=true;
    }

    @Override
    public void run() {

        while(!koniec){
            synchronized(this){
                System.out.println(id);
            try {
              Thread.sleep((int)(500+Math.random() * (1000-500)));
            }catch (Exception e) {}
                id++;
            }        
        }
     }
}

public class Test {

    public static void main(String args[]) throws Exception {
        Watek r[] = new Watek[10];
        Thread t[] = new Thread[10];

        for(int i=0; i<r.length; i++){
            r[i] = new Watek();
        }

        for(int i=0; i<t.length; i++){
            t[i] = new Thread(r[i]);
            t[i].start();
        }

        while(true){
         int i = 0;
             if(i==0){
                 r[i].zwolnij();
                 t[i].join(); 
                 i++;
             }
             else if(t[i+1]!=null){
                r[i+1].zablokuj();
                t[i+1].join(); 
                r[i].zwolnij();
                t[i].notify();
                        i++;
             }else{
                i=0;
             }
        }
    }

}

Czuje że skaleczyłem ten język programowania :D Proszę o pomoc