我有2個主題。Java [android]:我應該使用同步ou semphore對象嗎?
第一個調用這個函數
public int doCompute1(obj)
{
if (obj.state == OK_FOR_COMPUTE1)
{
// do something
obj.state = OK_FOR_COMPUTE2;
}
}
第二個線程調用這個函數
public int doCompute2(obj)
{
if (obj.state == OK_FOR_COMPUTE2)
{
// do something
obj.state = OK_FOR_COMPUTE1;
}
}
對於它似乎很好地工作的那一刻!
我的問題是:它是正確的嗎? 是否有可能在多核處理器上,obj.state在高速緩存中,然後通過線程修改這個vaue,第二個線程不會看到它?
如果此代碼不正確,該怎麼辦?
我猜你的意思==在if語句中。 – johusman 2012-07-30 08:53:01
是的。抱歉。我已經修正了 – webshaker 2012-07-30 08:58:04
好。但如果最終答案在評論中!我應該接受答案嗎?我應該怎麼做在這種情況下!最後可能會有問題hav有迴應! – webshaker 2012-08-01 07:08:10