线程安全问题的概述和线程安全问题的代码实现

 线程安全问题概述

 

 线程安全问题的代码实现

复制代码
/*
   实现卖票案例
*/
public class RunnableImpl implements Runnable{
    // 定义一个多线程贡献的票源
    private int ticket = 100;
    // 设置线程任务:卖票
    @Override
    public void run() {
        // 使用死循环 让卖票操作重复执行
        while (true){
            // 先判断票是否存在
            if (ticket > 0){
                // 使用线程睡眠提高安全问题出现的概率
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                // 卖票
                System.out.println("在卖"+Thread.currentThread().getName()+"线程的第:"+ticket+"张票");
                ticket--;
            }
        }
    }
}
复制代码
复制代码
/*
   模拟卖票案例
   创建了3个共享线程,同时开启,对共享的票进行出售
*/
public class Demo01Ticket {
    public static void main(String[] args) {
        // 创建实现类对象
        RunnableImpl runnable = new RunnableImpl();
        // 创建Thread类对象,构造方法中传递Runnable接口的实现类
        Thread thread0 = new Thread(runnable);
        Thread thread1 = new Thread(runnable);
        Thread thread2 = new Thread(runnable);
        // 调用start开启多线程
        thread0.start();
        thread1.start();
        thread2.start();
    }
}
复制代码

 

posted @   夫君  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示