Java言語で三個スレッド順番印刷

機能:セマフォでスレッドを制御して順番をプリントする 例ABCABC。。。
サンプルコード:
import java.util.concurrent.Semaphore;
public class ThreeThread {

public static void main(String[] args) throws InterruptedException {
Semaphore sempA = new Semaphore(1);
Semaphore sempB = new Semaphore(0);
Semaphore sempC = new Semaphore(0);
int N=100;
Thread threadA = new PrintThread(N, sempA, sempB, “A");
Thread threadB = new PrintThread(N, sempB, sempC, “B");
Thread threadC = new PrintThread(N, sempC, sempA, “C");
threadA.start();
threadB.start();
threadC.start();
}

static class PrintThread extends Thread{

int N;
Semaphore curSemp;
Semaphore nextSemp;
String name;

public PrintThread(int n, Semaphore curSemp, Semaphore nextSemp, String name) {
N = n;
this.curSemp = curSemp;
this.nextSemp = nextSemp;
this.name = name;
}

public void run() {
for (int i = 0; i < N; ++i) { try { curSemp.acquire(); System.out.println(name); nextSemp.release(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } } } }

Source

Posted by arkgame