首页 > 其他分享 >线程不安全问题实例

线程不安全问题实例

时间:2024-08-19 21:26:29浏览次数:11  
标签:窗口 Thread 张票 安全 window 实例 线程 ......

package com.shujia.day19.sellTickets;

/*
    使用Runnable的方式实现

    为了模拟更加真实的售票情况,我们加入延迟
    问题:
        我们加入了延迟之后,发现
        a. 有重复售卖同一张票的情况(原因1)
        b. 还出现了一个不该出现的票数据,比如第0张票,第-1张票(原因2)
    原因:
        1. cpu小小的时间片,足以让程序执行很多次
        2. 线程的执行具有随机性,且是抢占式执行的

    现象:线程不安全的现象
        如何判断一个程序是否存在线程不安全的现象呢?
        三要素(同时满足):
            1、是否存在多线程环境?
            2、是否存在共享数据?
            3、是否存在多条语句操作着共享数据?
    如何解决线程不安全的现象?
        1、同步代码块
        2、lock锁


 */
class Window implements Runnable{
    private static int tickets = 100;

    @Override
    public void run() {
        while (true){
            if(tickets>0){ // 1
                try {
                    // w2, w3, w1
                    Thread.sleep(50);//sleep()方法是静态的
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName()+" 正在出售第 "+(tickets--)+" 张票......");
                //窗口3 正在出售第 97 张票......
                //窗口2 正在出售第 97 张票......
                //..
                //窗口2 正在出售第 1 张票......
                //窗口3 正在出售第 0 张票......
                //窗口1 正在出售第 -1 张票......
            }
        }
    }
}

public class SellTicketDemo1 {
    public static void main(String[] args) {
        Window window = new Window();

        Thread w1 = new Thread(window,"窗口1");
        Thread w2 = new Thread(window,"窗口2");
        Thread w3 = new Thread(window,"窗口3");

        w1.start();
        w2.start();
        w3.start();

    }
}

标签:窗口,Thread,张票,安全,window,实例,线程,......
From: https://www.cnblogs.com/qiwei-bigdata/p/18368158

相关文章

  • 【网络安全入门】学习网络安全必须知道的100 个网络基础知识_网络安全知识入门基础_网
    什么是链接?链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。2OSI参考模型的层次是什么?有7个OSI层:物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。3什么是骨干网?骨干网络是集中的基础设施,旨在将不同的路由和数据......
  • 零基础毫无经验该如何入门学习网络安全?
    首先我们说说什么是网络安全?网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。想学网络安全首先得学习了解网络,学网络的最终目的是为了选择就业方向看清网络拓扑图,对客......
  • APP安全检测报告内容详解
    一、APP安全检测的必要性APP安全检测是确保移动应用安全的重要一环。在开发过程中,由于技术、人员和管理等方面的原因,APP可能存在各种安全漏洞和风险。这些漏洞一旦被黑客利用,可能导致用户数据泄露、恶意代码注入、应用被篡改等严重后果。因此,对APP进行安全检测,及时发现并修复......
  • 多线程概念
    packagecom.shujia.day19;/*多线程:进程:正在运行的程序,是系统进行资源分配和调用的独立单位。每一个进程都有它自己的内存空间和系统资源。理解:一个正在运行的软件线程:是进程中的单个顺序控制流,是......
  • ssh配置文件安全设置
    1.在/etc/ssh/sshd_config中设置空闲超时值为200秒2.在/etc/ssh/sshd_config中禁用空密码3.在SSH配置文件(/etc/ssh/sshd_config)中禁用X11(图形服务器)转发功能,Shell访问不需要4.将MaxAuthenticationTries调整为/etc/ssh/sshd_config中的较低值,因此攻击者在尝试使用失败的密......
  • 什么是网络安全?网络安全防范技术包括哪些?
    一、引言在当今数字化的时代,网络已经成为人们生活和工作中不可或缺的一部分。然而,随着网络的普及和应用的广泛,网络安全问题也日益凸显。从个人隐私泄露到企业关键信息被盗,从网络欺诈到大规模的网络攻击,网络安全威胁无处不在。因此,理解网络安全的概念以及掌握网络安全防范技术......
  • 三防平板:现代生产效率与安全的革新者
    三防加固工业平板电脑以其独特的防水、防尘、防摔性能,成为复杂生产环境下可靠的工作伙伴。无论是高温、高湿的恶劣环境,还是充满粉尘与振动的车间,三防平板电脑均能保持稳定运行,显著降低硬件故障率,确保生产线的平稳运转,为连续稳定的生产提供坚实保障。从耐用性和稳定性角度来......
  • 华为账号“一键登录”能力让美团用户尽享安全便捷的登录体验
    背景随着全场景智能生态的日益完善,用户面临着众多应用与服务的登录需求,而繁琐的注册登录流程通常是用户转化的隐形障碍,用户可能因为步骤繁琐、记忆密码困难而中途放弃,导致应用错失潜在用户。其次,高门槛的登录方式增加了存量用户流失的风险,用户可能因为登录不便而减少应用使用频......
  • Pico程序设置安全边界(不想每次手动设置)
     ///<summary>///安全设置路径///</summary>privatestring_configSavePath="/storage/emulated/0/Android/data/com.pvr.seethrough.setting/files/config1.txt";privatevoidSetBoundary(){if(!File.Exists(_configSavePath))......
  • MySQL 排他锁之表级锁:使用与实例详解
    在数据库系统中,锁机制是确保数据一致性、完整性的重要手段。MySQL中的排他锁(ExclusiveLock)是防止数据在修改过程中被其他事务访问或修改的关键工具。排他锁不仅可以作用于单行数据,还可以作用于整个表。当排他锁用于表级别时,它可以阻止其他事务对表的任何操作,从而确保数据的一致性......