【发布时间】:2015-07-11 12:15:40
【问题描述】:
我尝试锁定对象但没有结果
在这种情况下如何处理锁?
编辑:
基于 cmets,我决定不再使用代码发布问题。它不是要复制和粘贴然后运行并检查编译器所说的内容。
您不是专注于问题,而是人为地制造了一个问题,而不是面对我所面临的这个问题。
也许我应该使用写锁或重入锁来代替同步块...
我需要“手拉手”还是“链锁”?
甚至使用信号量?
EDIT2:
我有什么:
- 我得到了 object A,它对 X 保持引用,并得到了 getX 方法(返回 X)和 reset X(X=null)
- 我得到了 object X 和 字段 a,b,c
我做什么:
其他线程T:
- 通过 _x = A.getX() 引用 X
- 做一些改变_x.a
- 做一些改变_x.c
- /// 同时A决定重置X ///
- 做一些改变_x.b ...崩溃!
我想要达到的目标:
- 在 T 修改 X(_x) 时防止 A.resetX(null)
换句话说,当正在修改对象时,防止 object = null
我是否需要使用一些标志表明X是修改中?
我不想要的:
- 不断检查 if(X!=null)
与:
@downvoter:请注意解释您的投票!请
【问题讨论】:
-
@Codebender 我同意你的看法。虽然,这不是解释问题的好方法。 :)
-
@TomaszBest:所以把那个骨架当作代码,而不是图像,
标签: java concurrency