黑马程序员——线程间通信_等待唤醒机制
来源:互联网 发布:如何卖照片知乎 编辑:程序博客网 时间:2024/05/18 01:43
package thread;
/**
* 线程间通信:多个线程共享一个资源
* 等待唤醒机制:wait(),notify()
* @author wjw
*
*/
public class Thread_Translate {
public static void main(String[] args) {
Res r=new Res();
Thread_in in=new Thread_in(r);
Thread_out out=new Thread_out(r);
new Thread(in).start();
new Thread(out).start();
}
}
/*
* 线程A 录入资源操作
*/
class Thread_in implements Runnable{
public Thread_in(Res r){
this.r=r;
}
private Res r;
boolean boo=true;
public void run(){
while(true){
synchronized(r){
if(r.isBoo()){
try{
r.wait();//等待
}catch(Exception e){
e.printStackTrace();
}
}
if(boo){
r.setName("jack");
r.setSex("man");
boo=false;
}else{
r.setName("李经理");
r.setSex("女女女女女女女女女");
boo=true;
}
r.setBoo(true);
r.notify();//唤醒
}
}
}
}
/*
* 线程 B 取出资源操作
*/
class Thread_out implements Runnable{
public Thread_out(Res r){
this.r=r;
}
private Res r;
public void run(){
while(true){
synchronized(r){
if(!r.isBoo()){
try{
r.wait();//等待
}catch(Exception e){
e.printStackTrace();
}
}
System.out.println("name:"+r.getName()+",sex:"+r.getSex());
r.setBoo(false);
r.notify();//唤醒
}
}
}
}
/*
* 共享的资源
*/
class Res{
private String name;
private String sex;
private boolean boo;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public boolean isBoo() {
return boo;
}
public void setBoo(boolean boo) {
this.boo = boo;
}
}
- 黑马程序员——线程间通信_等待唤醒机制
- 黑马程序员_九 【线程间通信】【等待唤醒机制】【JDK1.5线程新特性】【其他知识点】
- 黑马程序员_JavaSE基础14 之 线程间通信 等待唤醒机制 多生产多消费者 ...
- java线程间通信——等待唤醒机制
- JavaSE 多线程 线程间通信— 等待唤醒机制
- Java线程间通信-等待唤醒机制
- 线程间通信--等待唤醒机制
- 线程间的通信------------等待唤醒机制
- 线程间通信之等待唤醒机制
- 线程间通信之等待唤醒机制
- java线程间通信_线程同步_等待唤醒机制
- 黑马程序员java学习—多线程2:等待唤醒机制
- 黑马程序员--等待唤醒机制
- 黑马程序员_多线程等待唤醒机制简单入门
- 黑马程序员_多线程的死锁和等待唤醒机制
- java多线程——线程间通信之线程等待唤醒机制
- 黑马程序员------线程2(小结)-等待唤醒机制
- Java基础学习5_多线程(线程间通信--等待唤醒机制)
- matlab EM算法
- 正则表达式入门教程
- 输入子系统读书笔记
- 我常用的putty配置选项
- 黑马程序员--套接之局域网聊天客户端(待续)
- 黑马程序员——线程间通信_等待唤醒机制
- 对输入子系统分析总结
- Java环境变量设置
- map函数剖析
- getWidth()和getMeasuredWidth()
- 做事情需要搞清楚的几个顺序
- WCF行为
- Spirng MVC拦截器的应用
- Android WebView学习笔记