package com.jldx;
/**
* 共享资源
*/
class Res{
public String name;
public String sex;
public boolean flag = false;
}
/**
* 写入数据
*/
class InputThread extends Thread{
private Res res;
public InputThread(Res res) {
this.res = res;
}
@Override
public void run() {
int count = 0;
while(true){
synchronized (res){
if (res.flag) {
try {
// 当前线程变为等待,但是可以释放锁
res.wait();
} catch (Exception e) {
}
}
if(count == 0){
res.name = "老公";
res.sex = "男";
}else {
res.name = "老婆";
res.sex = "女";
}
//实现奇数和偶数
count = (count+1)%2;
res.flag = true;
res.notify();
}
}
}
}
/**
* 读取数据
*/
class OutputThread extends Thread{
private Res res;
public OutputThread(Res res) {
this.res = res;
}
@Override
public void run() {
int count = 0;
while(true){
synchronized (res){
if (!res.flag) {
try {
// 当前线程变为等待,但是可以释放锁
res.wait();
} catch (Exception e) {
}
}
System.out.println(res.name + "-----" + res.sex);
res.flag = false;
res.notify();
}
}
}
}
/**
* ThreadCommunication
*/
public class ThreadDemo01 {
public static void main(String[] args) {
Res res = new Res();
InputThread inputThread = new InputThread(res);
OutputThread outputThread = new OutputThread(res);
inputThread.start();
outputThread.start();
}
}
多线程共享资源,实现奇偶交替输出:wait()方法让线程变为等待
最新推荐文章于 2022-10-16 16:33:47 发布