线程不安全问题实例

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;@Overridepublic void run() {while (true){if(tickets>0){ // 1try {// w2, w3, w1Thread.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();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/783997.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

24年首批!上海通管通报违规app涉及欧莱雅、玛莎拉蒂

8月16日上海市通信管理局官方微信公众号“上海通信圈”发布《上海市通信管理局关于侵害用户权益行为app的通报(2024年第一批)》。本次app通报为2024年第一批。内容显示本次共通报26款移动互联网应用程序涉及app和小程序。 应用来源:本次检测的应用来源均为主流分发平台如应用…

ControlNeXt: Powerful and Efficient Control for Image and Video Generation(2024,8)

ControlNeXt: Powerful and Efficient Control for Image and Video Generation(2024,8) paper Github 进一步在ControlNet上进行了改进,主要针对一下两点对于每一个模块添加一个Zero-Conv也会占用很多显存. Zero-Conv两个模态的输出的mean、var具有差异,导致收敛很慢.针对1,使…

033、Vue3+TypeScript基础,路由传参时候把层级脱掉

01、Datail.vue代码如下:<template><ul class="news-list"><li>编号:{{ route.query.id }}</li><li>编号:{{ route.query.title }}</li><li>编号:{{ route.query.content }}</li></ul> </template>…

Tarjan 之 SCC 与 缩点

这篇文章将讲述作者对 Tarjan求SCC与缩点(不是割点)的理解 让我们开始吧! Tarjan SCC 与 缩点 既然要求 \(SCC\) 那我们先要弄明白 什么是 SCC SCC 指的是强连通分量 强连通指的是若一张有向图的节点两两互相可达,则这张图是强连通的 而强连通分量 指的是一个极大的连通子图…

马哥教育 c10网络安全 第二周作业 2024/8/17

1、使用 html 写一个网页,要求满足以下条件: (1)网页中含有任意一张图片,图片路径使用绝对路径,鼠标悬停在图片时出现“马哥教育”文本,且点击图片可跳转至马哥教育官方页面 (2)网页中包含账号、密码登录,且账号提前定义好是 admin 且不可更改,输入密码时显示加密形…

FinalShell工具的使用

第1篇 FinalShell工具的使用1.介绍 xshell作为Linux远程连接的工具,教程请看《通过xshell远程连接ubuntu》。但是,xshell是付费软件。于是,找到一个finalshell作为其替换软件。 FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工具,充分…

c10 第二次作业 2024/8/17

1、使用 html 写一个网页,要求满足以下条件: (1)网页中含有任意一张图片,图片路径使用绝对路径,鼠标悬停在图片时出现“马哥教育”文本,且点击图片可跳转至马哥教育官方页面 (2)网页中包含账号、密码登录,且账号提前定义好是 admin 且不可更改,输入密码时显示加密形…

博客模版

第1篇 FinalShell工具的使用1.介绍 xshell作为Linux远程连接的工具,教程请看《通过xshell远程连接ubuntu》。但是,xshell是付费软件。于是,找到一个finalshell作为其替换软件。 FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工具,充分…

打印99乘法表

我们的核心思想是以小化大 1.先写出1的所有乘法2.设置一个变量,使得不止有1乘n3.将1的乘法放入变量中,使得1再次被循环包起来4.解决重复乘法图片中出现了两次1*4,说明刚才的表达式会有重复相乘 出现重复的原因: a有1~9的数字 而i也会有1~9, a*i就必然会有重复,我们需要让…

动态dp

T1 一共 \(n\) 颗糖果,第 \(i\) 颗的价值为 \(a[i]\),你不能连着选两颗,请问你的选到的最大价值为多少 显然有如下写法 : 设 \(dp[i][0/1]\)表示选到了第 \(i\) 颗,第 \(i\) 颗选或不选 显然有转移 : \(dp[i][0] = max(dp[i - 1][0], dp[i - 1][1])\) \(dp[i][1] = max(dp[i - …

Linux学习/TCP Socket通信

Linux下的TCP Socket通信案例及详解案例 案例一 server.c #include <stdio.h> // 标准输入输出 #include <stdlib.h> //提供通用的工具函数,例如内存分配和程序退出。 #include <string.h> //提供字符串处理函数。 #include <unistd.h> //提供对 POSI…

Rockylinux 9.4 安装部署

Rockylinux安装部署 1、操作系统引入 2024 年 6 月 30 日,CentOS Linux 7 终止其生命周期(EOL),至此 CentOS 全系列版本也已停止维护,属于 CentOS 的时代彻底终结。CentOS 停止维护后,用户将无法获得包括问题修复和功能更新在内的任何软件维护和支持,宕机、服务中断、数…