方式一:
class SaleTicket extends Thread{
static int num=50;
static Object o=new Object();
public SaleTicket(String name){
super(name);
}
@Override
public void run() {
while(true){
synchronized(o){
if(num>0){
System.out.println(Thread.currentThread().getName()+"售出了第"+num+"号票");
num--;
}else{
System.out.println("售罄了");
break;
}
}
}
}
}
public class Demo11 {
public static void main(String[] args) {
// TODO Auto-generated method stub
SaleTicket thread1=new SaleTicket("窗口1");
SaleTicket thread2=new SaleTicket("窗口2");
SaleTicket thread3=new SaleTicket("窗口3");
thread1.start();
thread2.start();
thread3.start();
}
}
方式二:
class SaleTicket implements Runnable{
int num = 50;
static Object o=new Object();
public void run(){
while(true){
synchronized(o){
if(num>0){
System.out.println(Thread.currentThread().getName()+"卖出了"+num+"号票");
num--;
}else{
System.out.println("卖完了");
break;
}
}
}
}
}
public class Test20 {
public static void main(String[] args) {
// TODO Auto-generated method stub
SaleTicket saleTicket=new SaleTicket();
Thread t1=new Thread(saleTicket,"窗口1");
Thread t2=new Thread(saleTicket,"窗口2");
Thread t3=new Thread(saleTicket,"窗口3");
t1.start();
t2.start();
t3.start();
}
}