码迷,mamicode.com
首页 > 其他好文 > 详细

对象的组合

时间:2018-02-03 19:55:33      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:nbsp   hashset   共享   npe   通过   ddp   count   模式   strong   

在设计线程安全类的过程中,需要包含以下三个基本要素:

  • ·找出构成对象状态的所有变量
  • 找出约束变量的不变性条件
  • 建立对象状态的并发访问管理策略

 

示例1:  使用Java监视器模式的线程安全计数器

@ThreadSafe
public class Counter {

    @GuardedBy("this") private long value=0;
    public synchronized long getValue() {
        return value;
    }
    
    public synchronized long increment() {
        if(value==Long.MAX_VALUE)
            throw new IllegalStateException("Counter overflow");
        return ++value;
    }
}

实例封闭

  将数据封装在对象内部,可以将数据的访问限制在对象的方法上,从而更容易确保线程在访问数据时总能持有正确的锁。

被封闭对象一定不能超出它们既定的作用域。对象可以封闭在类的一个实例(例如作为类的一个私有成员)中,或者封闭在某个作用域内(例如作为一个局部变量),再或者封闭在线程内(例如在某个线程中将对象从一个方法传递到另一个方法,而不是在多个线程之间共享该对象)。

示例二: 通过封闭机制来确保线程安全

@ThreadSafe
public class PersonSet {
    @GuardedBy("this")
    private final Set<Person> mySet=new HashSet<Person>();
    
    public synchronized void addPerson(Person p) {
        mySet.add(p);
    }
    
    public synchronized boolean containPerson(Person p) {
        return mySet.contains(p);
    }
}

 

 

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

对象的组合

标签:nbsp   hashset   共享   npe   通过   ddp   count   模式   strong   

原文地址:https://www.cnblogs.com/ktao/p/8410476.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!