万码退散 2022-04-01 01:02 采纳率: 100%
浏览 50
已结题

Java中关于多线程的疑惑求解

img

img

img

img

刚接触多线程内容,想求解一下两段程序为什么会有不同的结果。
希望能较详细的解答,感谢!

  • 写回答

1条回答 默认 最新

  • 在自我救赎中成长 2022-04-01 09:00
    关注

    区别在于上面代码是,先判断再上锁同步。下面代码先同步上锁,在判断执不执行。
    1.这就会出现,上面代码可能会出现A,B二个线程同时通过判断,但A线程先获取到锁进行执行。这个时候B线程就只能在这个地方等待。等A执行完了tickers-- = 0 后。B线程在去获取锁进行执行代码块。又执行了一次 tickers-- 。

    1. 先同步上锁再判断tickers > 0 才会去执行那块代码。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月9日
  • 已采纳回答 4月1日
  • 创建了问题 4月1日

悬赏问题

  • ¥15 latex投稿显示click download
  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?