synchronizedList 多线程情况下如果一个线程做循环,有可能会抛出异常,如何处理?

synchronizedList多线程情况下如果一个线程做循环,有可能会抛出异常,如何处理?搞成CopyOnwriteArrayList性能太差了
synchronizedList里的上锁对象是mutex,如下:
staticclassSynchronizedCollectionimplementsCollection,Serializable{
。。。
finalObjectmutex;//Objectonwhichtosynchronize
。。。
}
如果对synchronizedList对象上锁,和在mutex上上锁的add()不会互斥啊这种情况是不是用Vector比较好?Vector的add()等方法是直接对其对象上锁的
莫回无
浏览 528回答 2
2回答

慕的地8271018

没用过这个,不过看源码,synchronizedList默认的上锁对象就是当前定义的对象:finalObjectmutex;//ObjectonwhichtosynchronizeSynchronizedCollection(Collectionc){this.c=Objects.requireNonNull(c);mutex=this;}所以正常来说都是线程安全的,不清楚题主具体什么场景会出现异常,或者尝试自定义上锁对象呢,ListsyncList=Collections.synchronizedCollection(list,mutex),源码构造方法:SynchronizedCollection(Collectionc,Objectmutex){this.c=Objects.requireNonNull(c);this.mutex=Objects.requireNonNull(mutex);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript