作家
登录

Java并发编程之并发代码设计

作者: 来源: 2017-09-19 16:53:11 阅读 我要评论

check(red, green, blue); 
  •         synchronized (this) { 
  •             this.red = red; 
  •             this.green = green; 
  •             this.blue = blue; 
  •             this.name = name
  •         } 
  •     } 
  •  
  •     public synchronized int getRGB() { 
  •         return ((red << 16) | (green << 8) | blue); 
  •     } 
  •  
  •     public synchronized String getName() { 
  •         return name
  •     } 
  •  
  •   
  •  
    1. SynchronizedRGB color = 
    2.     new SynchronizedRGB(0, 0, 0, "Pitch Black"); 
    3. ... 
    4. int myColorInt = color.getRGB();      // 1 
    5. String myColorName = color.getName(); // 2 
    6.  
    7. //如不雅其他线程在1履行后调用set办法 就会导致 getName 跟getRGB的值不匹配 
    8.  
    9. synchronized (color) { 
    10.     int myColorInt = color.getRGB(); 
    11.     String myColorName = color.getName(); 
    12.  
    13. //必须使这2个语句同步履行  

    如上,LocalObject对象没有被办法返回,也没有被传递给someMethod()办法外的对象。每个履行someMethod()的线程都邑创建本身的LocalObject对象,并赋值给localObject引用。是以,这里的LocalObject是线程安然的。事实上,全部someMethod()都是线程安然的。即使将LocalObject作为参数传给同一个类的其它办法或其它类的办法时,它仍然是线程安然的。当然,如不雅LocalObject经由过程某些办法被传给了其余线程,那它就不再是线程安然的了

    创建弗成变对象的几条原则

    • 不供给修改可变对象的办法。(包含修改字段的办法和修改字段引用对象的办法)
    • 将类的所有字段定义为final、private的。
    • 不许可子类重写办法。简单的办法是将类声明为final,更好的办法是将构造函数声明为私有的,经由过程工厂办法创建对象。
    • 如不雅类的字段是对可变对象的引用,不许可修改被引用对象。
    • 不共享可变对象的引用。当一个引用被当做参数传递给构造函数,而这个引用指向的是一个外部的可变对象时,必定不要保存这个引用。如不雅必须要保存,那么创建可变对象的拷贝,然后保存拷贝对象的引用。同样如不雅须要返回内部的可变对象时,不要返回可变对象本身,而是返回其拷贝
    1. final public class ImmutableRGB { 
    2.  
    3.     // Values must be between 0 and 255. 
    4.     final private int red; 

        推荐阅读

        Web的现状:网页性能提升指南

      【沙龙】51CTO诚邀您9月23号和多位技巧大年夜咖一路聊智能CDN的优化之路,抓紧时光哦! 互联网成长异常敏捷,所以我们创造了Web平台。平日 我们会忽视连通性等问题,但用户们却不会熟视无睹>>>详细阅读


      本文标题:Java并发编程之并发代码设计

      地址:http://www.17bianji.com/lsqh/37528.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)