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