线程间的数据共享(卖票)

线程间的数据共享(卖票)

用3个线程 模拟 3个售票口, 总共出售 200张票

  • 用3个线程模拟3个售票口的售票行为
  • 这个3个线程, 应该共享200张票的数据
public class SellTicketsTester {
    public static void main(String[] args) {
        SellTickets t = new SellTickets();
        new Thread(t).start();
        new Thread(t).start();
        new Thread(t).start();
    }
}
class SellTickets implements Runnable {
    private int tickets = 200;
    
    public void run() {
        while (tickets > 0) {
            System.out.println(Thread.currentThread().getName() + "is selling ticket" + tickets--);
        }
    }
}

在这个例子中, 创建了3个线程, 每个线程调用的是 同一个 SellTickets 对象中的 run()方法, 访问的是同一个对象的变量(tickets)

如果是通过创建 Thread类的 子类来模拟售票过程, 再创建3个新线程,

则每个线程都会有 各自的方法 和 变量,

虽然方法是相同的, 但变量确实各有 200张票, 因而结果将会是 各卖出200张票, 和原意就不符了

参考链接

https://www.xuetangx.com/learn/THU08091000252/THU08091000252/7754101/video/12732924

posted on 2021-11-06 09:18  beyondx  阅读(43)  评论(0编辑  收藏  举报

导航