IPC之读者写者问题:读者优先
2013-04-20 19:39
267 查看
import java.util.concurrent.*; import java.util.*; public class ReaderFirst { public static void main(String[] args) { ExecutorService executor = Executors.newCachedThreadPool(); executor.execute(new Reader()); executor.execute(new Writer()); executor.shutdown(); } private static Semaphore mutex = new Semaphore(1); private static Semaphore db = new Semaphore(1); private static int data; private static int readcount = 0; private static class Reader implements Runnable { public void run() { try { while ( true ) { mutex.acquire(); readcount++; if ( readcount == 1 ) db.acquire(); mutex.release(); System.out.println("read " + data); mutex.acquire(); readcount--; if ( readcount == 0 ) db.release(); mutex.release(); Thread.sleep((int)(Math.random() * 1000)); } } catch( InterruptedException ex ) { ex.printStackTrace(); } } } private static class Writer implements Runnable { public void run() { try { while ( true ) { db.acquire(); data = (int)(Math.random() * 2312); System.out.println("\t\t\tWrite " + data); db.release(); Thread.sleep((int)(Math.random() * 1000)); } } catch( InterruptedException ex ) { ex.printStackTrace(); } } } }
相关文章推荐
- IPC之读者写者问题:写者优先
- 优先读者的读者/写者问题的算法设计
- 读者-写者问题 写者优先与公平竞争
- 读者-写着问题中写者优先的实现
- 经典IPC问题(读者写者问题)
- linux中关于IPC(一部分涉及读者写者问题)
- “读者-写者问题”的写者优先算法实现
- 进程同步的经典问题1——读者写者问题(写者优先与公平竞争)
- linux 读者写者问题 读者优先c++
- 读者写者问题--使用信号量的读者优先与写者优先程序分析
- 读者写者问题之写者优先
- 有名信号量实现读者-写者问题(读者优先)
- 读者写者问题--使用信号量的读者优先与写者优先程序分析
- 读者写者问题之写者优先(java)
- (转)很有借鉴意义!读者写者问题--使用信号量的读者优先与写者优先程序分析
- 读者-写者问题 写者优先与公平竞争
- C 优先读者 读者/写者问题
- readers and writers problem 读者写者问题 写者优先 C++实现
- 读者写者问题-写者优先参考答案(vc代码)
- 进程同步的经典问题1——读者写者问题(写者优先与公平竞争)