thread == 票池

public class ThreadDemo2 {
    public static void main(String[] args){
        TicketPool tp = new TicketPool();
        Salers s1 = new Salers("Marry ",tp);
        Salers s2 = new Salers("Jarry ",tp);
        s1.start();
        s2.start();
    }


}

//票池
class TicketPool{
    private int tickets =100;
    public  synchronized int getTickets(){// 票池对象已经独立了,所以可以根据当前对象(也就是票池自身)进行参考了
        int currt = tickets; // 三个线程共有同一个票池,所以可以以自身作为参考, 之前那个需要静态
        tickets --; // 前面那个是定义在线程内部,也就是说,如果不以类作为参考,那么三个线程会创建各自的参照物。
        return currt;
    }
}

class Salers extends Thread{
    private TicketPool tp; // 这里不能用 new TicketsPool 不然会每个线程都创建各自的票池。
    private String name;
    public Salers(String name,TicketPool pool){
      this.name = name;
      this.tp = pool;
    }
    public void run(){
        while(true) {
            int cur = tp.getTickets();
            if (cur >0) {
                System.out.println(name + ">>>>>>>>>> " + cur);
            }else{
                return ;
            }
        }
    }
}
原文地址:https://www.cnblogs.com/jijizhazha/p/7740168.html