Java中的并发问题案例(一)—多人抢票
01 代码
public class SynTest implements Runnable{
//票数
private int ticketNum=10;
//标志位
private boolean flag=true;
@Override
public void run() {
//买票
while (flag){
buyTicket();
}
}
//使用关键字synchronized同步方法
public synchronized void buyTicket(){
//模仿网络延时
try {
Thread.currentThread().sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (ticketNum<=0){
flag=false;
return;
}
System.out.println(Thread.currentThread().getName()+"---->拿到了第"+ticketNum--+"票");
}
public static void main(String[] args) {
SynTest synTest = new SynTest();
Thread A = new Thread(synTest, "A");
Thread B = new Thread(synTest, "B");
Thread C = new Thread(synTest, "C");
A.start();
B.start();
C.start();
}
}
02 运行结果