首页 > 编程知识 正文

condition用法及搭配java,condition用法搭配

时间:2023-05-03 11:48:01 阅读:217320 作者:2831

Condition的功能类似于在传统的线程技术中的,Object.wait()和Object.notify()的功能。
代码
Condition condition = lock.newCondition();
res. condition.await(); 类似wait
res. Condition. Signal() 类似notify

class Res {
public String userName;
public String sex;
public boolean flag = false;
Lock lock = new ReentrantLock();
}

class 甜美的蚂蚁 extends Thread {
private Res res;
Condition newCondition;
public 甜美的蚂蚁(Res res, Condition newCondition) {
this.res = res;
this.newCondition=newCondition;
}

@Overridepublic void run() {int count = 0;while (true) {// synchronized (res) {try {res.lock.lock();if (res.flag) {try {

// res.wait();
newCondition.await();
} catch (Exception e) {
// TODO: handle exception
}
}
if (count == 0) {
res.userName = “余胜军”;
res.sex = “男”;
} else {
res.userName = “小红”;
res.sex = “女”;
}
count = (count + 1) % 2;
res.flag = true;
// res.notify();
newCondition.signal();
} catch (Exception e) {
// TODO: handle exception
}finally {
res.lock.unlock();
}
}

// }}

}

class czdjr extends Thread {
private Res res;
private Condition newCondition;
public czdjr(Res res,Condition newCondition) {
this.res = res;
this.newCondition=newCondition;
}

@Overridepublic void run() {while (true) {

// synchronized (res) {
try {
res.lock.lock();
if (!res.flag) {
try {
// res.wait();
newCondition.await();
} catch (Exception e) {
// TODO: handle exception
}
} res.flag = false;
// res.notify();
newCondition.signal();
} catch (Exception e) {
// TODO: handle exception
}finally {
res.lock.unlock();
}
// }
}

}

}

public class ThreadDemo01 {

public static void main(String优秀的小土豆 args) {Res res = new Res();Condition newCondition = res.lock.newCondition();甜美的蚂蚁 inputThread = new 甜美的蚂蚁(res,newCondition);czdjr outThrad = new czdjr(res,newCondition);inputThread.start();outThrad.start();}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。