/**
* 小明在国庆放七天的时间里,每天看三把DOTA,看4个小时的书,
* 顺序不允许打乱,在多线程情况下怎么实现(线程互斥)
* @author pipi
*
*/
public class ThreadTest {
static final Work work = new Work();
/**
* dota时间
*/
private static Thread dota = new Thread(new Runnable() {
@Override
public void run() {
for(int i = 1;i <= 7;i++){
work.dota(i);
}
}
});
/**
* 看书时间
*/
private static Thread book = new Thread(new Runnable() {
@Override
public void run() {
for(int i = 1;i <= 7;i++)
work.book(i);
}
});
/**
* 开启一周任务
* @param args
*/
public static void main(String[] args){
dota.start();
book.start();
}
}
/**
* 工作类
* @author pipi
*
*/
class Work{
/**
* 作为执行标识,为真打dota,假则看书
*/
private boolean lock = true;
public synchronized void dota(int i){
while(!lock){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for(int j = 1;j <= 3;j++)
System.out.println("第" + i + "天========"+"第" + j + "个小时打dota");
lock = false;
this.notify(); //唤醒等待中的线程
}
public synchronized void book(int i){
while(lock){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for(int j = 1;j <= 4;j++)
System.out.println("第" + i + "天========"+"第" + j + "个小时看书");
lock = true;
this.notify();
}
}
java多线程关于线程互斥实现实例
多线程同步机制示例
最新推荐文章于 2021-02-16 08:31:26 发布
本文通过一个具体的例子展示了如何使用Java多线程技术实现线程间的同步操作。具体场景为模拟小明在国庆假期期间每天固定顺序进行的活动:先玩三小时DOTA再阅读四小时书籍。通过synchronized关键字和wait/notify方法确保了线程按预期顺序执行。

2423

被折叠的 条评论
为什么被折叠?



