社区
Java SE
帖子详情
请教java多线程问题
小太阳很温暖
2020-02-06 10:56:02
我想请问。我明明只循环20遍,-1和-2哪来的?
...全文
655
13
打赏
收藏
请教java多线程问题
我想请问。我明明只循环20遍,-1和-2哪来的?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
不烦人的阙
2021-03-10
打赏
举报
回复
要么让循环同步要么让方法同步
行走在键盘上的猿
2021-03-08
打赏
举报
回复
简单一些:将while(ticket)改为while(true),在同步代码块中加判断。
冰思雨
2021-03-04
打赏
举报
回复
while 条件中的 tick 变量,不在临界区内,所以,程序执行到 while 条件时,不受临界区的保护,从而产生线程安全问题。 楼主可以尝试,在声明 tick 的时候,使用 volatile 关键字,它可以保证,多线程的场景下,读取 tick 变量的值是一致的。当然,写入的时候,还是要上锁的。 不推荐使用 AtomicInteger 变量,因为,用法不太合适。
啥都无所谓
2021-02-03
打赏
举报
回复
引用 2 楼 披着虎皮_的石头 的回复:
楼主把名字,改为 对我来说,你是光,更好一些。
楼主把名字,改为“ 好家伙!看见你我直接迪迦” 更好一些。
Francis.Sun
2021-02-03
打赏
举报
回复
改成AtomicInteger锁都不用加的。。。。
Francis.Sun
2021-02-03
打赏
举报
回复
把tick的int改为AtomicInteger就可以了。
Java全栈路线
2021-02-03
打赏
举报
回复
tick = 1的时候三个线程同时进入 while 循环中,然后一个线程拿到锁,另外两个在等待,这时就会有 -1 -2出现
Dylan、
2021-02-03
打赏
举报
回复
线程没有锁,可以在ticket = 1的时候有三个线程有执行权,这样,就算一个线程被终止了,另外的三个线程还会--,-2只是一种可能,你可以多运行几次找找规律 还有,可以用ReentrantLock锁一下线程,也可以用synchronized锁一下就OK了
披着虎皮 的石头
2021-02-02
打赏
举报
回复
楼主把名字,改为 对我来说,你是光,更好一些。
TimGaGa
2021-02-02
打赏
举报
回复
把while也锁进去就好了,其实你这样整个方法全在锁里的,可以试着把方法锁上
maradona1984
2021-02-02
打赏
举报
回复
楼主可以去了解下 "双重检测锁"
源者鬼道
2021-02-02
打赏
举报
回复
刚看到楼主有一个19年的找工作的帖子,就有看到了最新的学习帖子,想问一下楼主,开发的工作之前找的怎么样,想了解一下,我之后也想去培训,然后转行找工作
musdenis
2020-02-07
打赏
举报
回复
因为你的while语句并没有锁,所以在判断while(tick>0)时会有问题,比方说tick=1的时候,三个线程都满足条件的,所以你需要在同步代码块中再判断一下tick是否大于0
java
多线程
打字程序
是一个
java
多线程
打字程序,由于我们期末要用,所以到这里
请教
来了,你们这破网站还总政那个没用的麻烦不啊?
JAVA
网络(单机也可)聊天室加报告
随着大众化、小型化趋势的加剧,网络聊天在当今已经不算新鲜事物,聊天室可以更好的方便大家交流,
请教
或探讨
问题
,同时也能开阔视野。但大多数网络聊天都需要借助位于Internet的服务器,这就给那些具有大规模内部网络的用户造成了不便,出于安全等考虑,通常这些内部网络不能直接连接到Internet。我设计的聊天室,提供了类似于常见聊天室的功能,同时可以在局域网内部使用,只需稍加改进,便可以应用于架设企业内部的聊天室,方便员工之间的沟通。 本聊天室系统,主要利用DELPHI用于底层网络通信Socket组件,使用了
多线程
技术。
java
多线程
无效,关于
Java
多线程
的几点疑问,求助大佬
Java
多线程
的线程安全需要保证原子性和可见性,volatile 关键字可以保证可见性不能保证原子性,synchronized 关键字可以保证可见性和原子性,不过有几点疑问
请教
一下大佬:(1)volatile 关键字如何保证的可见性,在书上和博客上看到了两种不同的说法,不知道哪种正确:1.赋值操作后会立即写回主内存,一个线程数据回写到主内存会导致其他线程对应数据无效(通过嗅探总线上传输的数据检查...
java
镶嵌创建线程_
请教
一个
Java
多线程
嵌套使用的
问题
12110 天前@Vedar @1194129822 @lancelee01 @micean 感谢各位的热情解答,我很受启发。再结合朋友给的例子,我仔细读了下源码,已经大致能复盘这个错误了。**inner 线程池 reject 的原因:**1. 主要原因:队列太小,这里给的是 1,实际每个 outer 线程要产生 3 个任务2. 次要原因:outter 线程里面使用 countdownlatch ...
java
多线程
插入数据库_小弟
请教
一个
多线程
并发向数据库插入数据的
问题
该楼层疑似违规已被系统折叠隐藏此楼查看此楼String insertMapRecorderStr = "insert into map (zoom_level,tile_column,tile_row,tile_id) values(?,?,?,?)";String insertImageRecorderStr = "insert into images (tile_id,tile_data,t...
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章