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