晚么 2023-02-15 15:07 采纳率: 0%
浏览 26

这个count这两种写法的区别是什么呀(关键词-多线程)

今天看了多线程,这个count这两种写法的区别是什么呀?


System.out.println(Thread.currentThread().getName()+(count--));

System.out.println(Thread.currentThread().getName()+count);
count--;
  • 写回答

3条回答 默认 最新

  • GISer Liu 2023-02-15 15:11
    关注

    以下答案引用自GPT-3大模型,请合理使用:

    示例
    
    上面两种写法的区别在于,前者是在调用println方法之前,count的值已经减1,而后者是先获取count的值,然后调用println方法,最后count的值减1。
    
    前者适用于只有一个线程在操作count时,因为只有一个线程在操作,先减1就不会出现两个线程同时操作count而导致脏读的问题。
    
    而后者则更适合多线程并发操作count时,因为多线程操作时,使用原子操作来先获取count的值,将count的值加入到到println方法中,然后再使用原子操作将count1,这样就可以保证count的正确性,避免多线程操作同一个count发生脏读的问题。
    
    示例代码:
    
    // 使用synchronized保证count的正确性
    public static synchronized void updateCount() {
    System.out.println(Thread.currentThread().getName()+count);
      count--;
    }
    

    如果我的回答解决了您的问题,请采纳我的回答

    评论

报告相同问题?

问题事件

  • 创建了问题 2月15日

悬赏问题

  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错