进程同步-生产者消费者问题
来源:互联网 发布:研究生软件著作权 编辑:程序博客网 时间:2024/05/17 06:52
Info1.java
=================
package threads;
class Info1 {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public synchronized void set(String name,int age){
if(!flag){
try{
super.wait();
}catch (Exception e) {
e.printStackTrace();
}
}
this.name=name;
try{
Thread.sleep(1000);
}catch (Exception e) {
e.printStackTrace();
}
this.age=age;
flag=false;
super.notify();
}
public synchronized void get(){
if(flag){
try{
super.wait();
}catch (Exception e) {
e.printStackTrace();
}
}
try{
Thread.sleep(100);
}catch (Exception e) {
e.printStackTrace();
}
System.out.println(this.getName()+"<===>"+this.getAge());
flag=true;
super.notify();
}
private String name ="Rollen";
private int age =20;
private boolean flag=false;
}
ProducerInfo1.java
===================
package threads;
class ProducerInfo1 implements Runnable {
private Info1 info =null;
ProducerInfo1(Info1 info) {
this.info = info;
}
public void run() {
boolean flag =false;
for (int i =0; i <25; ++i) {
if (flag) {
this.info.set("Rollen",20);
flag = false;
} else {
this.info.set("ChunGe",100);
flag = true;
}
}
}
}
ConsumerInfo1.java
======================
package threads;
class ConsumerInfo1 implements Runnable {
private Info1 info =null;
public ConsumerInfo1(Info1 info) {
this.info = info;
}
public void run() {
for (int i =0; i <25; ++i) {
try {
Thread.sleep(100);
} catch (Exception e) {
e.printStackTrace();
}
this.info.get();
}
}
}
TestInfo1.java
=========================
package threads;
public class TestInfo1 {
public static void main(String[] args) {
Info1 info=new Info1();
ProducerInfo1 pro=new ProducerInfo1(info);
ConsumerInfo1 con=new ConsumerInfo1(info);
new Thread(pro).start();
new Thread(con).start();
}
}
运行结果:
=========================
Rollen<===>20
ChunGe<===>100
Rollen<===>20
ChunGe<===>100
Rollen<===>20
ChunGe<===>100
Rollen<===>20
ChunGe<===>100
Rollen<===>20
ChunGe<===>100
Rollen<===>20
ChunGe<===>100
Rollen<===>20
ChunGe<===>100
Rollen<===>20
ChunGe<===>100
Rollen<===>20
ChunGe<===>100
Rollen<===>20
ChunGe<===>100
Rollen<===>20
ChunGe<===>100
Rollen<===>20
ChunGe<===>100
Rollen<===>20
- 进程同步-生产者消费者问题
- 进程同步-生产者消费者问题
- 经典进程同步问题-生产者消费者问题
- 经典进程同步问题-生产者与消费者
- C++模拟“生产者消费者”进程同步问题
- 生产者-消费者同步问题
- 生产者消费者问题-同步
- 经典进程同步问题 生产者——消费者问题
- 【操作系统总结】经典的进程同步问题-生产者消费者问题
- 进程同步问题-生产者消费者问题(linux semaphore实现)
- 操作系统:经典进程同步问题(1)生产者-消费者问题
- 经典进程的同步问题-生产者与消费者
- 进程同步--生产者消费者问题(Producer-consumer Problem)
- 操作系统同步生产者消费者问题
- 线程同步生产者消费者问题
- 线程同步-生产者消费者问题
- 同步锁:生产者-消费者问题
- java生产者消费者同步问题
- 10、王爽《汇编语言》笔记_实验12
- 串操作
- Yii: 如何把JS脚本添加到CGridView数据行的操作按钮中
- Apache禁止目录访问方法介绍
- 如何在CLARiiON存储上彻底删除主机信息
- 进程同步-生产者消费者问题
- Homework
- C++ STL
- 如何成为杰出的电子工程师?
- 重建CLARiiON的管理员账号名或密码
- 基于商品的协同过滤
- oracle sql_trace跟踪与使用tkprof工具分析
- Java 中读写文件
- hibernate获取session的两个方法(笔记)