仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 789|回复: 8
打印 上一主题 下一主题

[学习教程] 了解下JAVA的Java多线程:“JUC原子类”05之AtomicLongFieldUpdater原子

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:00:49 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(SunMicrosystems)公司的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发。
AtomicLongFieldUpdater先容和函数列表
AtomicLongFieldUpdater能够对指定"类的volatilelong范例的成员"举行原子更新。它是基于反射道理完成的。
AtomicLongFieldUpdater函数列表
  1. //受回护的无操纵机关办法,供子类利用。
  2. protectedAtomicLongFieldUpdater()
  3. //以原子体例将给定值增加到此更新器办理的给定对象的字段确当前值。
  4. longaddAndGet(Tobj,longdelta)
  5. //假如以后值==预期值,则以原子体例将此更新器所办理的给定对象的字段设置为给定的更新值。
  6. abstractbooleancompareAndSet(Tobj,longexpect,longupdate)
  7. //以原子体例将此更新器办理的给定对象字段以后值减1。
  8. longdecrementAndGet(Tobj)
  9. //猎取此更新器办理的在给定对象的字段中坚持确当前值。
  10. abstractlongget(Tobj)
  11. //以原子体例将给定值增加到此更新器办理的给定对象的字段确当前值。
  12. longgetAndAdd(Tobj,longdelta)
  13. //以原子体例将此更新器办理的给定对象字段以后值减1。
  14. longgetAndDecrement(Tobj)
  15. //以原子体例将此更新器办理的给定对象字段确当前值加1。
  16. longgetAndIncrement(Tobj)
  17. //将此更新器办理的给定对象的字段以原子体例设置为给定值,并前往旧值。
  18. longgetAndSet(Tobj,longnewValue)
  19. //以原子体例将此更新器办理的给定对象字段以后值加1。
  20. longincrementAndGet(Tobj)
  21. //最初将此更新器办理的给定对象的字段设置为给定更新值。
  22. abstractvoidlazySet(Tobj,longnewValue)
  23. //为对象创立并前往一个具有给定字段的更新器。
  24. static<U>AtomicLongFieldUpdater<U>newUpdater(Class<U>tclass,String
  25. fieldName)
  26. //将此更新器办理的给定对象的字段设置为给定更新值。
  27. abstractvoidset(Tobj,longnewValue)
  28. //假如以后值==预期值,则以原子体例将此更新器所办理的给定对象的字段设置为给定的更新值。
  29. abstractbooleanweakCompareAndSet(Tobj,longexpect,longupdate)
复制代码
AtomicLongFieldUpdater示例
  1. //LongTest.java的源码
  2. importjava.util.concurrent.atomic.AtomicLongFieldUpdater;
  3. publicclassLongFieldTest{
  4. publicstaticvoidmain(String[]args){
  5. //猎取Person的class对象
  6. Classcls=Person.class;
  7. //新建AtomicLongFieldUpdater对象,传送参数是“class对象”和“long范例在类中对应的称号”
  8. AtomicLongFieldUpdatermAtoLong=AtomicLongFieldUpdater.newUpdater(cls,"id");
  9. Personperson=newPerson(12345678L);
  10. //对照person的"id"属性,假如id的值为12345678L,则设置为1000。
  11. mAtoLong.compareAndSet(person,12345678L,1000);
  12. System.out.println("id="+person.getId());
  13. }
  14. }
  15. classPerson{
  16. volatilelongid;
  17. publicPerson(longid){
  18. this.id=id;
  19. }
  20. publicvoidsetId(longid){
  21. this.id=id;
  22. }
  23. publiclonggetId(){
  24. returnid;
  25. }
  26. }
复制代码
<p>
还有就是总有人问我到底该学习什么语言,什么语言有前途,那么我的回答是不论是C,C++,java,.net,ruby,asp或是其他语言都可以学,编程的关键不是语言,而是思想。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-21 02:04

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表