读书人

一个貌似线程安全的示例

发布时间: 2012-12-20 09:53:21 作者: rapoo

一个看似线程安全的示例

在《java并发编程实战》第四章4.4.1节给出了一个程序示例:

?

static class SynchronizedCollection<E> implements Collection<E>, Serializable {// use serialVersionUID from JDK 1.2.2 for interoperabilityprivate static final long serialVersionUID = 3053995032091335093L;final Collection<E> c;  // Backing Collectionfinal Object mutex;     // Object on which to synchronizeSynchronizedCollection(Collection<E> c) {            if (c==null)                throw new NullPointerException();    this.c = c;            mutex = this;        }SynchronizedCollection(Collection<E> c, Object mutex) {    this.c = c;            this.mutex = mutex;        }}

?可以看到mutex就是当前的SynchronizedCollection对象,而SynchronizedRandomAccessList继承自SynchronizedList,SynchronizedList又继承自SynchronizedCollection,所以SynchronizedRandomAccessList中的mutex也就是SynchronizedRandomAccessList的this对象。所以在GoodListHelper中使用的锁list对象,和SynchronizedRandomAccessList内部的锁是一致的,所以它可以实现线程安全性。

?

?

读书人网 >编程

热点推荐