Java 并发编程:如何保证共享变量的原子性?

本文探讨了Java并发编程中确保共享变量原子性的重要性,通过实例分析了无状态变量的线程安全性,以及有状态变量在多线程环境下可能遇到的问题。文章提出了解决方案,如使用`synchronized`关键字和`AtomicInteger`,并讨论了在增加更多状态变量时如何保持线程安全。最后,介绍了内置锁机制保证代码块的原子性。
摘要由CSDN通过智能技术生成

线程安全性是我们在进行 Java 并发编程的时候必须要先考虑清楚的一个问题。这个类在单线程环境下是没有问题的,那么我们就能确保它在多线程并发的情况下表现出正确的行为吗?

我这个人,在没有副业之前,一心扑在工作上面,所以处理的蛮得心应手,心态也一直保持的不错;但有了副业之后,心态就变得像坐过山车一样。副业收入超过主业的时候,人特别亢奋,像打了鸡血一样;副业迟迟打不开局面的时候,人就变得惶惶不可终日。

仿佛我就只能是个单线程,副业和主业并行开启多线程模式的时候,我就变得特别没有安全感,尽管整体的收入比没有副业之前有了很大的改善。

怎么让我自己变得有安全感,我还没想清楚(你要是有好的方法,请一定要告诉我)。但怎么让一个类在多线程的环境下是安全的,有 3 条法则,让我来告诉你:

  1. 不在线程之间共享状态变量
  2. 将状态变量改为不可变
  3. 访问状态变量时使用同步

 

 

01 那么,状态变量是什么?

我们先来看一个没有状态变量的类吧,代码示例如下。

class Chenmo {
 public void write() {
 System.out.println("我寻了半生的春天,你一笑便是了。");
 }
}

Chenmo 这个类就是无状态变量的,它只有一个方法,既没有成员变量,也没有类变量。任何访问它的线程都不会影响另外一个线程的结果,因为两个

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值