class MyRunnable implements Runnable {
private static AtomicLong aLong = new AtomicLong(10000); //原子量,每个线程都可以自由操作
private String name; //操作人
private int x; //操作数额
MyRunnable(String name, int x) {
this.name = name;
this.x = x;
}
public void run() {
System.out.println(name + "执行了" + x + ",当前余额:" + aLong.addAndGet(x));
}
}从运行结果可以看出,虽然使用了原子量,但是程序并发访问还是有问题,那究竟问题出在哪里了?这里要注意的一点是,原子量虽然可以保证单个变量在某一个操作过程的安全,但无法保证你整个代码块,或者整个程序的安全性。因此,通常还应该使用锁等同步机制来控制整个程序的安全性。
本文通过一个具体的Java代码示例探讨了原子量在多线程环境中的作用及其局限性。尽管原子量能确保单一变量操作的安全性,但对于涉及多个操作的复杂场景,还需结合锁等同步机制来保障整体程序的线程安全性。
82

被折叠的 条评论
为什么被折叠?



