Java by API/java.util.concurrent/Semaphore

Материал из Java эксперт
Перейти к: навигация, поиск

new Semaphore(int permits, boolean fair)

   <source lang="java">

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 SyncOutput(sem, "Message 1"));
   Thread thrdB = new Thread(new SyncOutput(sem, "Message 2!"));
   thrdA.start();
   thrdB.start();
   thrdA.join();
   thrdB.join();
 }

} class SyncOutput implements Runnable {

 Semaphore sem;
 String msg;
 SyncOutput(Semaphore s, String m) {
   sem = s;
   msg = m;
 }
 public void run() {
   try {
     sem.acquire();
     System.out.println(msg);
     Thread.sleep(10);
   } catch (Exception exc) {
     System.out.println("Error Writing File");
   }
   sem.release();
 }

}

 </source>
   
  
 
  



Semaphore: acquire()

   <source lang="java">

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 SyncOutput(sem, "Message 1"));
   Thread thrdB = new Thread(new SyncOutput(sem, "Message 2!"));
   thrdA.start();
   thrdB.start();
   thrdA.join();
   thrdB.join();
 }

} class SyncOutput implements Runnable {

 Semaphore sem;
 String msg;
 SyncOutput(Semaphore s, String m) {
   sem = s;
   msg = m;
 }
 public void run() {
   try {
     sem.acquire();
     System.out.println(msg);
     Thread.sleep(10);
   } catch (Exception exc) {
     System.out.println("Error Writing File");
   }
   sem.release();
 }

}

 </source>
   
  
 
  



Semaphore: release()

   <source lang="java">

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 SyncOutput(sem, "Message 1"));
   Thread thrdB = new Thread(new SyncOutput(sem, "Message 2!"));
   thrdA.start();
   thrdB.start();
   thrdA.join();
   thrdB.join();
 }

} class SyncOutput implements Runnable {

 Semaphore sem;
 String msg;
 SyncOutput(Semaphore s, String m) {
   sem = s;
   msg = m;
 }
 public void run() {
   try {
     sem.acquire();
     System.out.println(msg);
     Thread.sleep(10);
   } catch (Exception exc) {
     System.out.println("Error Writing File");
   }
   sem.release();
 }

}

 </source>