多线程学习(三)------线程案例:多人抢票

案例说明

名称:多人抢票
说明:多个线程同时操作同一个对象

发现问题

当多个人操作同一个对象时,会出现数据紊乱

案例:

/**
 * 2020/4/5 17:44
 * 文件说明:
 *          多个线程同时操作同一个对象
 *          多人抢票例子
 *  发现问题:当多个人操作同一个对象时,会出现数据紊乱
 *
 * @author 太阳以西
 * 梦可以到的地方,只要努力,总有一天,自己也可以达到!
 */
public class TestThread3 implements Runnable {

    //票数
    private int ticketNums = 10;

    @Override
    public void run() {

        while (true){

            try {

                Thread.sleep(10000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            if (ticketNums<=0){
                break;
            }
            System.out.println(Thread.currentThread().getName()+"--->拿到了第"+ticketNums--+"张票");

        }
    }

    public static void main(String[] args) {
        TestThread3 testThread3 = new TestThread3();

        new Thread(testThread3,"盖伦").start();
        new Thread(testThread3,"瑞兹").start();
        new Thread(testThread3,"黄牛").start();

    }
}

结果:
在打印的剩余票数中,会出现负数

你可能感兴趣的:(java多线程)