其他分享
首页 > 其他分享> > 线程安全问题的代码实现以及问题产生的原理

线程安全问题的代码实现以及问题产生的原理

作者:互联网

线程安全问题的代码实现

public class demg_07 implements Runnable{
    //定义一个多线程共享的票源
    private int ticket = 100;

    //设置线程任务:卖票
    @Override
    public void run() {
        //使用死循环让卖票操作重复执行
        while (true){
            //判断票是否存在
            if (ticket > 0){
                //提高安全问题出现的概率,让程序休眠
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                //票存在,卖票, ticket--
                System.out.println(Thread.currentThread().getName()+"-->正在卖票"+ticket+"票");
                ticket--;
            }
        }
    }
}
class a{
    public static void main(String[] args) {
        //创建Runnable接口的实现对象
        demg_07 d = new demg_07();
        //创建Thread类对象,构造方法中传递Runnable接口的实现对象
        Thread t1 = new Thread(d);
        Thread t2 = new Thread(d);
        Thread t3 = new Thread(d);
        //调用start方法开启线程
        t1.start();
        t2.start();
        t3.start();

    }
}

运行结果:

 

 

线程安全问题产生的原理

 

标签:Thread,卖票,代码,问题,start,线程,new,ticket
来源: https://www.cnblogs.com/aqhk/p/16460301.html