Runnable并发问题(火车票练习)

发布于:2023-01-13 ⋅ 阅读:(512) ⋅ 点赞:(0)
package com.zzx.线程.Runnable;

/**
 * @date: 2022/08/15/ 23:13
 * @author: ZhengZiXuan
 * @title: 多个线程操作同一个对象
 * @description: 买火车票的例子
 */
public class RunnableTest01 implements Runnable{

    //票数
   private int ticketNums = 10;

    public void run() {
        while (true){
            if (ticketNums <= 0){
                break;
            }
            //模拟延时
            try {
                Thread.sleep(200);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName()+"==>拿到了第"+ ticketNums-- + "张火车票");
        }
    }
}
class test{
    public static void main(String[] args) {
        RunnableTest01 runnableTest01 = new RunnableTest01();
        new Thread(runnableTest01,"张三").start();
        new Thread(runnableTest01,"李四").start();
        new Thread(runnableTest01,"王五").start();
    }
}

控制台运行结果如下:
在这里插入图片描述
发现问题:通过运行发现,多个线程同时执行时,有几率会操作同一个资源,线程不安全,数据紊乱

既上面问题做了一个新的程序进行优化


网站公告

今日签到

点亮在社区的每一天
去签到