Semaphore_BSP

NEW_IN_JAVA

Grünschnabel
Hi Leute
brauche Hilfe bei folgenden BSP.

Aufgabenstellung:
3 Prozesse greifen in einer Schleife auf einem gemeinsamen Bereich b zu.
Synchronsieren Sie die Prozesse durch Semaphore so, dass der Zugriff stets in der Reihenfolge p1,p2,p3 (zyklisch) erfolgt.

Code:
import java.util.concurrent.Semaphore; 
import java.lang.Thread;

public class SemaphoreDemo 
{ 
  static Semaphore semaphore = new Semaphore( 2, true );
  
  static Runnable r = new Runnable() { 
	    public void run() { 
	      while ( true ) { 
	        try 
	        { 
	          semaphore.acquire(); 
	 
	          System.out.println( "Thread=" + Thread.currentThread().getName() + 
	                              ", Available Permits=" + semaphore.availablePermits() ); 
	          Thread.sleep( 1000 ); 
	        } 
	        catch ( InterruptedException e ) { 
	          e.printStackTrace(); 
	        } 
	        finally { 
	          semaphore.release();
	        } 
	      } 
	    } 
  };


public static void main( String[] args ) 
{ 
  new Thread( r ).start(); 
  new Thread( r ).start(); 
  new Thread( r ).start(); 
} 
}

Code:
Ausgabe:
Thread-0
Thread-1
Thread-2

Ich hab das Problem wie ich die Schleife zur gemeinsamen Bereich b mache.
[BIN ANFÄNGER IN JAVA]
 
Zuletzt bearbeitet:
Zurück