读书人

多线程操作-找异常

发布时间: 2012-09-22 21:54:54 作者: rapoo

多线程操作----找错误
找找下面错误

class ListHepler{public List<E> list = Collections.synchronizedList(new ArrayList<E>());public synchronized boolean putIfAbsent(E x){boolean absent = !list.contains(x);if(absent)list.add(x);return absent;}}

这里putIfAbsent方法和list使用的不是同一个锁,所以有隐患

class ListHepler{public List<E> list = Collections.synchronizedList(new ArrayList<E>());public  boolean putIfAbset(E x){                synchronized (list) {      boolean absent = !list.contains(x);if(absent)list.add(x);}return absent;}}


上面的方法都很傻逼

class ListHepler{public List<E> list = new ArrayList<E>();public synchronized boolean putIfAbset(E x){    boolean absent = !list.contains(x);if(absent)list.add(x);}return absent;}}

读书人网 >编程

热点推荐