Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.util.concurrent.Semaphore;
- public class DX{
- Semaphore mutex; //count
- Semaphore db; // w
- int count;
- public DX(){
- mutex = new Semaphore(1);
- db = new Semaphore(1);
- count = 0;
- }
- public void write(){
- db.acquire();
- System.out.println("Writer is working....");
- db.release();
- }
- public void read(){
- mutex.acquire();
- if (count == 0){
- db.acquire();
- }
- count++;
- mutex.release();
- System.out.println("Reader is working....");
- mutex.acquire();
- count--;
- if (count == 0){
- db.release();
- }
- mutex.release();
- }
- public static void main(String[] args){
- DX dx = new DX();
- Reader reader = new Reader(dx);
- Writer writer = new Writer(dx);
- reader.run();
- writer.run();
- }
- }
- public class Reader extends Thread{
- DX dx;
- public Reader(DX dx){
- super();
- this.dx = dx;
- }
- public void run(){
- while(true){
- dx.read();
- Thread.sleep(100);
- }
- }
- }
- public class Writer extends Thread{
- DX dx;
- public Writer(DX dx){
- super();
- this.dx = dx;
- }
- public void run(){
- while(true){
- dx.write();
- Thread.sleep(1000);
- }
- }
- }
Add Comment
Please, Sign In to add comment