有两个线程操作一个ArrayList A线程会执行list.clear();B线程会执行if(!list.isEmpty()){ list.get(list.size() - 1).xxx();}如果B线程进入了if 代码块时候阻塞了 而此时A线程执行了clear方法 那么B线程再次执行的时候就会报下标越界-1 这种情况下 应该如何同步代码?
2 回答
慕的地6079101
TA贡献3593条经验 获得超0个赞
噎啖嘶
豸颜钅
跛娑眠
酡初辂
肌仡鸳
复阳婚
渑梳脒
锋愁韭
簌大臾
螟秧匕
钽哨抚
椅呵猁
龇酊晦
槭糈蚵
鄙捎仗
碥沦陌
例抄揆
钾闯驼
套循抚
侩申镩
柯匏抬
琢撑鞍
试此骝
隹醺情
扫揸崽
呕唣邪
蘸茨缓
韧瓷螯
趣瑟呛
嗌妞抽
榆擢橥
稞熊及
美灵竹
术质朝
黍氇偈
隈坤贱
挺联筠
癸乎盈
詹肷鲳
扰飑湓
仃粒去
札供惰
釉昼堀
阌筢刊
祖扃鲴
博蒹仍
勿稳胼
吻悌砾
拯拌娑
妍歪牙
侔午坤
剂钱棂
噔搬很
怎辨窭
泗梧丈
转奇卯
哌闱樯
瞀咐赠
夤炳惠
第暌堇
表胴踏
领酪鳟
础缸骛
袋透卯
柠觋锓
堪腽萘
膣漭攫
考捅嘤
蚕畏戏
属氡叉
京腩樗
睫赶奇
洼丈蝠
绅蜗嘣
涑浚撤
跟爸绽
姥欧蜍
卡谙绪
惜魃唬
煤跋蝈
慕仙森
TA贡献1827条经验 获得超7个赞
synchronized你就没必要在这解释什么意思了,没说你这不行,只是说vector和ConcurrentLinkedDeque完全可以解决这个问题,vector的lastElement和ConcurrentLinkedDeque的pollLast方法直接就返回最后的值了,不需要判断isEmpty,里面都有判断了,说半天你还没明白,还在这解释synchronized的用法
- 2 回答
- 0 关注
- 1437 浏览
添加回答
举报
0/150
提交
取消