井水初始值为10升
村庄1每次喝一升
村庄2每次喝二升
两个村庄喝完水都会休息一秒
怎么做?
package T13;
/**
* 喝水
*
* */
public class Ticket implements Runnable {
//水数量
int ticketCount=10;
@Override
public void run() {
saleTicket();
}
//喝水
public void saleTicket(){
//临界点,要用互斥锁实现同步
/**
* 1.函数级的同步:synchronized
* 2.语句块的同步:synchronized
* */
try{
while(true){
//需要锁,锁就是一个Object类型的变量
synchronized (this) {//临界点
if(ticketCount<1)
break;
String name = Thread.currentThread().getName();
if(name.equlas("村庄1"){
ticketCount = ticketCount-1;
System.out.println(name+"喝了1升水,还剩"+ticketCount+"升水");
}else if(name.equals("村庄2"){
ticketCount = ticketCount-2;
System.out.println(name+"喝了2升水,还剩"+ticketCount+"升水");
}
Thread.sleep(1000);
}
}
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args) {
Ticket ticket = new Ticket();
new Thread(ticket,"村庄1").start();
new Thread(ticket,"村庄2").start();
}
}
静态共享变量,设置锁,线程休眠
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632