Producer & Consumer ---- a practice in concurrent simulation
来源:互联网 发布:阿里云已备案域名 编辑:程序博客网 时间:2024/05/29 12:36
import java.util.Arrays;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.TimeUnit;class Write implements Runnable { private WriteAndRead writeAndRead; private int p = 0; private int count = 0; Write(WriteAndRead wr) { writeAndRead = wr; } @Override public void run() { try { while (!Thread.interrupted()) { synchronized (this) { while (writeAndRead.numbers[p] != null) wait(); } synchronized (writeAndRead.read) { System.out.println("write"); writeAndRead.numbers[p] = p; p = (p + 1) % 8; ++count; writeAndRead.read.notifyAll(); TimeUnit.MILLISECONDS.sleep(100); } if (count > WriteAndRead.END) throw new InterruptedException(); } } catch (InterruptedException e) { System.out.println("write interrupted."); } }}class Read implements Runnable { private WriteAndRead writeAndRead; private int p = 0; private int count = 0; Read(WriteAndRead wr) { writeAndRead = wr; } @Override public void run() { try { while (!Thread.interrupted()) { synchronized (this) { while (writeAndRead.numbers[p] == null) { wait(); } } System.out.println("read "); TimeUnit.MILLISECONDS.sleep(100); synchronized (writeAndRead.write) { System.out.println(writeAndRead.numbers[p]); writeAndRead.numbers[p] = null; p = (p + 1) % 8; ++count; writeAndRead.write.notifyAll(); } if (count == WriteAndRead.END) { System.out.println("end"); writeAndRead.exce.shutdownNow(); throw new InterruptedException(); } } } catch (InterruptedException e) { System.out.println("read interrupted."); } }}class WriteAndRead { final Write write = new Write(this); final Read read = new Read(this); Integer[] numbers = new Integer[8]; static final int END = 3; ExecutorService exce = Executors.newCachedThreadPool(); WriteAndRead() { Arrays.fill(numbers, null); exce.execute(write); exce.execute(read); } public static void main(String[] args) { new WriteAndRead(); }}
阅读全文
0 0
- Producer & Consumer ---- a practice in concurrent simulation
- Crafts Store ---- a concurrent simulation in Java
- producer consumer
- producer & consumer
- Fast synchronization between a single producer and single consumer
- The Producer-Consumer Problem
- compile producer-consumer
- ProtoThreads - Producer&Consumer
- ACE_Task Consumer-Producer
- Producer-consumer problem
- Producer Consumer 模式
- Producer-Consumer Pattern
- Producer-Consumer Pattern
- Semaphore Consumer-Producer Code
- BufferQueue/consumer/producer
- Producer-Consumer 生产者,消费者
- ZeroMQ with producer-consumer
- Fresco深入--- Producer && Consumer
- {A} + {B}
- JAVA动态实现Excel三级级联菜单
- JVM 新生代为何需要两个 Survivor 空间?
- 关于Eclipse 报 org.w3c.dom.Node (getTextContent())错误
- Codeforces Round #427 (Div. 2) E. The penguin's game(交互+思维+二分)
- Producer & Consumer ---- a practice in concurrent simulation
- EntityManager使用方法
- 电脑如何设置uefi启动?速度围观!
- FAT32学习笔记(三)文件的删除,目录的删除,FAT32表的用途,FsInfo的作用
- Matrix
- 从功能、交互、性能全方位解读,BI工具FineBI4.0.2测评报告
- pip更换成清华源
- Remainder(bfs + 记录路径)
- pat:L1-030. 一帮一