wood burning stoves 2.0*
The moose likes Threads and Synchronization and the fly likes Concurrency Utilities Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Threads and Synchronization
Bookmark "Concurrency Utilities" Watch "Concurrency Utilities" New topic
Author

Concurrency Utilities

Singh Harmeet
Ranch Hand

Joined: Aug 05, 2011
Posts: 115

in concurrency utilities we use "Semaphore" how the semaphore work??
we assign the values of permit in "Semaphore(value) constructor, how the permit work???

How the semaphore work in this code???

// An implementation of a producer and consumer
// that use semaphores to control synchronization.

import java.util.concurrent.Semaphore;

class Q {
int n;

// Start with consumer semaphore unavailable.
static Semaphore semCon = new Semaphore(0);
static Semaphore semProd = new Semaphore(1);

void get() {
try {
semCon.acquire();
} catch(InterruptedException e) {
System.out.println("InterruptedException caught");
}

System.out.println("Got: " + n);
semProd.release();
}

void put(int n) {
try {
semProd.acquire();
} catch(InterruptedException e) {
System.out.println("InterruptedException caught");
}

this.n = n;
System.out.println("Put: " + n);
semCon.release();
}
}

class Producer implements Runnable {
Q q;

Producer(Q q) {
this.q = q;
new Thread(this, "Producer").start();
}

public void run() {
for(int i=0; i < 20; i++) q.put(i);
}
}

class Consumer implements Runnable {
Q q;

Consumer(Q q) {
this.q = q;
new Thread(this, "Consumer").start();
}

public void run() {
for(int i=0; i < 20; i++) q.get();
}
}

class ProdCon {
public static void main(String args[]) {
Q q = new Q();
new Consumer(q);
new Producer(q);
}
}


With Regards :-
Harmeet Singh
asit dhal
Greenhorn

Joined: May 05, 2009
Posts: 13

read this link
http://download.oracle.com/javase/1,5.0/docs/api/java/util/concurrent/Semaphore.html#Semaphore%28int%29

at least read the functions Semaphore(), release() and acquire()


http://kodeyard.blogspot.com/
 
jQuery in Action, 2nd edition
 
subject: Concurrency Utilities