Untitled
unknown
plain_text
2 years ago
1.5 kB
7
Indexable
import java.util.concurrent.Semaphore;
class SharedResource {
private int data = 0;
public void increment() {
data++;
}
public void decrement() {
data--;
}
public int getData() {
return data;
}
}
class WorkerThread extends Thread {
private Semaphore semaphore;
private SharedResource sharedResource;
public WorkerThread(Semaphore semaphore, SharedResource sharedResource) {
this.semaphore = semaphore;
this.sharedResource = sharedResource;
}
@Override
public void run() {
try {
semaphore.acquire();
sharedResource.increment();
System.out.println("Data after increment: " + sharedResource.getData());
sharedResource.decrement();
System.out.println("Data after decrement: " + sharedResource.getData());
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
semaphore.release();
}
}
}
public class BinarySemaphores {
public static void main(String[] args) {
Semaphore semaphore = new Semaphore(1); // Binary semaphore
SharedResource sharedResource = new SharedResource();
WorkerThread worker1 = new WorkerThread(semaphore, sharedResource);
WorkerThread worker2 = new WorkerThread(semaphore, sharedResource);
WorkerThread worker3 = new WorkerThread(semaphore, sharedResource);
worker1.start();
worker2.start();
worker3.start();
}
}Editor is loading...
Leave a Comment