![
我现在知道那个窗口卖的是多少号票
我想知道卖出一张票后,剩余的总票数
你的那个变量是剩余票呢?num的话不就是直接就是num吗?
售票案例演示[Thread05.java]
/**
线程并发同步锁synchronized(Object){}的使用
*/
public class Thread05 {
public static void main(String[] args) {
//定义一个售票窗口
TicketWindow tw1=new TicketWindow();
//使用三个线程同时启动
Thread t1=new Thread(tw1);
Thread t2=new Thread(tw1);
Thread t3=new Thread(tw1);
t1.start();
t2.start();
t3.start();
}
}
//售票窗口类
class TicketWindow implements Runnable {
//共有2000张票
private int nums=2000;
private Dog myDog=new Dog();
public void run() {
while(true){
//出票速度是1秒出一张
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
//认为if else要保证其原子性
//先判断是否还有票
synchronized(myDog){
if(nums>0){
//显示售票信息
//Thread.currentThread().getName()得到当前线程的名字
System.out.println(Thread.currentThread().getName()+"正在售出第"+nums+"张票");
nums--;
}else{
//售票结束
break;
}
}
}
}
}
class Dog{
}
你那没加同步锁,没意义呀。卖票的各个线程直接具有不确定关系。