JAVA基础——多线程同步实现(生产者/消费者模型)
来源:互联网 发布:js escape的用法 编辑:程序博客网 时间:2024/05/19 22:46
class Store2{ //定义“Store2”类private int seq; //seq数值表示当前交易的次数private boolean available=false;public synchronized int get() { //synchronized标识同步方法,定义get方法——消费者调用while(available==false) {try {wait();}catch(InterruptedException e) {}}available=false;notify(); //唤醒return seq; //返回seq(当前交易次数)的值}public synchronized void put(int value) { //定义put方法——生产者调用while(available==true) {try {wait();}catch(InterruptedException e) {}}seq=value;available=true;notify();}}class Producer1 extends Thread { //定义生产者线程private Store2 store;private int num;public Producer1(Store2 s,int num) {store=s;this.num=num;}public void run() {for(int i=0;i<10;i++) {store.put(i); //调用store示例里的put方法System.out.println("Producer #"+this.num+"put:"+i);try {sleep((int)(Math.random()*100));}catch(InterruptedException e) {}}}} class Comsumer1 extends Thread{ //定义消费者线程private Store2 store;private int num;public Comsumer1(Store2 s,int num) {store=s;this.num=num;}public void run() {int value=0;for(int i=0;i<10;i++) {value=store.get(); //将seq(当前交易次数)返回赋值给valueSystem.out.println("Consumer #"+this.num+"got:"+value);}}}public class 线程锁{public static void main(String[] args) {Store2 s=new Store2(); //Store2、Producer1、Comsumer1实例化Producer1 p2=new Producer1(s,2); Comsumer1 c2=new Comsumer1(s,2);p2.start(); //启动p2、c2线程c2.start();}}
阅读全文
0 0
- JAVA基础——多线程同步实现(生产者/消费者模型)
- Java多线程系列(三)—生产者消费者模型
- 进程同步-生产者和消费者(PV操作实现——java多线程模拟)
- java多线程实现生产者/消费者同步
- Java实现生产者——消费者模型
- JAVA实现多线程生产者消费者模型
- Java实现生产者消费者模型:多线程+BlockingQueue
- java 多线程实现生产者消费者模型
- JAVA多线程实现生产者——消费者
- Java——生产者消费者多线程实现
- 【Java笔记】——多线程同步机制模拟生产者/消费者模型
- Java多线程--生产者消费者模型(Semaphore实现)
- Java多线程同步——生产者消费者问题
- Java多线程同步——生产者消费者问题
- java生产者消费者多线程同步
- java多线程同步案例之--生产者消费者模型
- 用java实现的生产者与消费者多线程同步互斥模型
- Java多线程初探——生产者-消费者模型的Java实现
- cocos2dx UserDefault存储数据问题
- redis添加访问密码
- 版本管理工具SVN
- 获得表格的行数据
- 如何在 Windows 上安装 Laravel Homestead
- JAVA基础——多线程同步实现(生产者/消费者模型)
- 第6章 电力窃漏电用户自动识别
- Kubernetes 的证书认证
- JavaScript基础之Node.js与stream
- Fragment之间的切换
- 使用node连接mySQL,封装自定义模块供外部调用
- 使用Maven插件构建Docker镜像
- android连接蓝牙相关问题及解决方法
- 基于jquery开发的UI框架有哪些