仓酷云

标题: 了解下JAVA的Java多线程:“JUC原子类”05之AtomicLongFieldUpdater原子 [打印本页]

作者: 冷月葬花魂    时间: 2015-1-18 11:00
标题: 了解下JAVA的Java多线程:“JUC原子类”05之AtomicLongFieldUpdater原子
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或是其他语言都可以学,编程的关键不是语言,而是思想。
作者: admin    时间: 2015-1-20 12:42
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
作者: 若相依    时间: 2015-1-25 15:50
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
作者: 兰色精灵    时间: 2015-1-31 06:50
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
作者: 小妖女    时间: 2015-1-31 22:00
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者: 精灵巫婆    时间: 2015-2-2 09:57
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
作者: 简单生活    时间: 2015-2-22 18:06
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
作者: 愤怒的大鸟    时间: 2015-3-7 01:14
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
作者: 深爱那片海    时间: 2015-3-14 00:55
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2