Witam,
jak w temacie - mam do napisania dwa wątki z czego jeden drukuje ciągle "A" a drugi "B". Potrzebuję też semaforów ( nie sprecyzowano ilu ), które będą ograniczały wypisanie znaków do co najwyżej dwóch, czyli możemy wypisać: "ABBABA..." ale nie można np. "AAABB".
Próbowałam coś stworzyć ale nie potrafię zrobić tak, żeby to było 1 lub 2 ( a nie np tylko "AABB" lub "AB" ).
Proszę o jakąś wskazówkę ;>
mój kod:
public class Watkiwatki {
public static void main(String[] args) {
Prog zadanie = new Prog();
zadanie.uruchom();
}
}
class Prog {
Semaphore s1= new Semaphore(2);
Semaphore s2= new Semaphore(1);
public void uruchom(){
Watek1 w1= new Watek1();
Watek2 w2= new Watek2();
w1.start();
w2.start();
}
class Watek1 extends Thread{
public void run(){
for(int i=0;i<50;i++){
try {
s1.acquire();
} catch (InterruptedException ex) {
Logger.getLogger(Prog.class.getName()).log(Level.SEVERE, null, ex);
}
try {
s1.acquire();
s2.release();
} catch (InterruptedException ex) {
Logger.getLogger(Prog.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.print("A");
}
}
}
class Watek2 extends Thread{
public void run(){
for(int i=0;i<50;i++){
try {
s2.acquire();
s1.release();
s1.release();
} catch (InterruptedException ex) {
Logger.getLogger(Prog.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.print("B");
}
}
}
}