Java 并发编程之 AtomicIntegerFieldUpdater AtomicLongFieldUpdater AtomicReferenceFieldUpdater
Java juc About 2,082 words说明
并发原子修改器,保证在多线程环境下对象中的字段的原子性。
示例
对象类
public class FieldUpdaterTest {
volatile String name;
volatile int age1;
volatile Integer age2;
volatile long money1;
volatile Long money2;
}
AtomicIntegerFieldUpdater
只能是基础类型的int
,不能是Integer
包装类型。
public class AtomicIntegerFieldUpdaterDemo {
public static void main(String[] args) {
FieldUpdaterTest fieldUpdaterTest = new FieldUpdaterTest();
AtomicIntegerFieldUpdater<FieldUpdaterTest> updater1 =
AtomicIntegerFieldUpdater.newUpdater(FieldUpdaterTest.class, "age1");
System.out.println(updater1.compareAndSet(fieldUpdaterTest, 0, 10));
System.out.println(fieldUpdaterTest.age1);
// 必须是基础类型的 int
// AtomicIntegerFieldUpdater<FieldUpdaterTest> updater2 =
// AtomicIntegerFieldUpdater.newUpdater(FieldUpdaterTest.class, "age2");
}
}
AtomicLongFieldUpdater
只能是基础类型的long
,不能是Long
包装类型。
public class AtomicLongFieldUpdaterDemo {
public static void main(String[] args) {
FieldUpdaterTest fieldUpdaterTest = new FieldUpdaterTest();
AtomicLongFieldUpdater<FieldUpdaterTest> updater1 =
AtomicLongFieldUpdater.newUpdater(FieldUpdaterTest.class, "money1");
System.out.println(updater1.compareAndSet(fieldUpdaterTest, 0, 10));
System.out.println(fieldUpdaterTest.money1);
// 必须是基础类型的 long
// AtomicLongFieldUpdater<FieldUpdaterTest> updater2 =
// AtomicLongFieldUpdater.newUpdater(FieldUpdaterTest.class, "money2");
}
}
AtomicReferenceFieldUpdater
public class AtomicReferenceFieldUpdaterDemo {
public static void main(String[] args) {
FieldUpdaterTest fieldUpdaterTest = new FieldUpdaterTest();
AtomicReferenceFieldUpdater<FieldUpdaterTest, String> updater =
AtomicReferenceFieldUpdater.newUpdater(FieldUpdaterTest.class, String.class, "name");
System.out.println(updater.compareAndSet(fieldUpdaterTest, null, "张三"));
System.out.println(fieldUpdaterTest.name);
}
}
Views: 1,658 · Posted: 2021-09-24
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...