public class Test01 {
public static void main(String[] args) {
//同一个资源
Ticket ticket = new Ticket();
//三个代理
new Thread(ticket, "li").start();
new Thread(ticket, "w").start();
new Thread(ticket, "h").start();
}
}
class Ticket implements Runnable {
public int tickets = 10;
boolean flag=true;
@Override
public void run() {
while (flag) {
test();
}
}
//加了synchronized锁后,线程同步、安全了,原理:它锁住了ticket的资源(tickets和flag这两个资源)
//最好把对象的资源都锁了
public synchronized void test(){
if(tickets<=0){
flag=false;
return;//直接返回给test(),不再执行后面的代码
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"--->"+tickets--);
}
}
关键——最好把一个对象的资源都锁了
来源:网站推广排名
原文:https://www.cnblogs.com/0591jb/p/13966657.html