Java Tutorial/Thread/Semaphore
A semaphore based coordination
import java.util.concurrent.Semaphore;
public class Main {
public static void main(String args[]) throws Exception {
Semaphore sem = new Semaphore(1, true);
Thread thrdA = new Thread(new MyThread(sem, "Message 1"));
Thread thrdB = new Thread(new MyThread(sem, "Message 2"));
thrdA.start();
thrdB.start();
thrdA.join();
thrdB.join();
}
}
class MyThread implements Runnable {
Semaphore sem;
String msg;
MyThread(Semaphore s, String m) {
sem = s;
msg = m;
}
public void run() {
try {
sem.acquire();
System.out.println(msg);
Thread.sleep(10);
sem.release();
} catch (Exception exc) {
System.out.println("Error Writing File");
}
}
}