Java并发编程-客户端加锁机制 博客分类: JAVA 客户端加锁机制
程序员文章站
2024-02-12 20:16:58
...
Java并发编程P61
public class ListHelper<E> { public List<E> list = Collections.synchronizedList(new ArrayList<E>()); /** * 非线程安全,每个实例对象都有唯一的锁来保证对象的原子一致性。 * synchronized修饰在方法上保证ListHelper对象实例的原子性,list实例的原子性得不到保证。 * @param x * @return */ public synchronized boolean putIfAbsentNotSafe(E x) { boolean absent = !list.contains(x); if (absent) { list.add(x); } return absent; } public boolean putIfAbsent(E x) { synchronized (list) { boolean absent = !list.contains(x); if (absent) list.add(x); return absent; } } }
下一篇: Java多线程回调方法实例解析