Ten kod ma za zadanie wypisaywac na przemian literki a i b. No i to robi, ale ja nie rozumiem do konca dzialania semaforow. Moglby ktos po ludzku wytlumaczyc? Tylko nie odsylajcie mnie na google, bo juz szukalam, ale dalej nie czaje. Tak na chlopski rozum jakby ktos umial wytulamczyc ;D
kod;
import java.util.concurrent.Semaphore;
class A extends Thread{
private Semaphore semA;
private Semaphore semB;
public A(Semaphore a, Semaphore b){
this.semA = a;
this.semB = b;
}
public void run(){
while(true)
{
semA.acquireUninterruptibly();
System.out.println("A");
semB.release();
}
}
}
class B extends Thread{
private Semaphore semB;
private Semaphore semA;
public B(Semaphore a, Semaphore b){
this.semA = a;
this.semB = b;
}
public void run(){
while(true)
{
semB.acquireUninterruptibly();
System.out.println("B");
semA.release();
}
}
}
public class PodstawySemaforow {
public static void main(String[] args) {
Semaphore semA = new Semaphore(1,true);
Semaphore semB = new Semaphore(0,true);
A a = new A(semA, semB);
B b = new B(semA, semB);
b.start();
a.start();
}
}