//另一种方法 直接public synchronized boolean buy()
//synchronized默认锁自己
//synchronized要锁取东西的对象 比如银行取钱锁银行卡 直接synchronized方法不一定可行
package DemoCreate;
public class Demo04Many implements Runnable{
private int ticketNums = 10;
public static void main(String[] args) {
Demo04Many demo04Many = new Demo04Many();
new Thread(demo04Many,"小明").start();
new Thread(demo04Many,"小华").start();
new Thread(demo04Many,"小张").start();
}
@Override
public void run() {
boolean flag = true;
while (flag) {
flag = buy();
}
}
public boolean buy(){
synchronized (this){
if (ticketNums<=0){
return false;
}
ticketNums--;
System.out.println(Thread.currentThread().getName()+"卖出第"+(10-ticketNums)+"张票");
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
return true;
}
}
}
}