package com.itheima.threaddemo12;
import java.util.concurrent.locks.ReentrantLock;
public class Ticket implements Runnable {
private int ticket = 100;
private Object obj = new Object();
private ReentrantLock lock = new ReentrantLock();
@Override
public void run() {
while (true) {
try {
lock.lock();
//synchronized (obj){//多个对象用同一把锁
if (ticket <= 0) {
//买完了
break;
} else {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
ticket--;
System.out.println(Thread.currentThread().getName() + "在卖票,还剩下" + ticket + "张票");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
lock.unlock();
}
//}
}
}
}
package com.itheima.threaddemo12;
public class Demo {
public static void main(String[] args) {
/*Ticket ticket1=new Ticket();
Ticket ticket2=new Ticket();
Ticket ticket3=new Ticket();
Thread t1=new Thread(ticket1);
Thread t2=new Thread(ticket2);
Thread t3=new Thread(ticket3);*/
Ticket ticket=new Ticket();
Thread t1=new Thread(ticket);
Thread t2=new Thread(ticket);
Thread t3=new Thread(ticket);
t1.setName("窗口1");
t2.setName("窗口2");
t3.setName("窗口3");
t1.start();
t2.start();
t3.start();
}
}