/** * セマフォを用いた相互排除を行うプログラム * $ java SemaphoreMutex で実行 */ import java.util.concurrent.Semaphore; import java.util.Random; /** * セマフォを用いた相互排除アルゴリズムを実行するクラスの * インスタンスを生成し実行するクラス * SemaphoreMutualExclusion クラスのインスタンスを4つ作り実行する */ class SemaphoreMutex { public static void main (String[] args) { int maxConcurrentAccess = 2; // 同時に使える資源の数 int threadNum = 4; // スレッド数 /* セマフォを生成する */ SemaphoreMutualExclusion.newSemaphore (maxConcurrentAccess); /* スレッドを生成する */ Thread th[] = new Thread[threadNum]; for (int i=0; i