我們使用stop終止執行緒會出現的問題
public class user
public int getid()
public void setid(int id)
public string getname()
public void setname(string name)
@override
public string tostring()
}public class stopthreadunsafe catch (interruptedexception e)
u.setname(string.valueof(v));
}thread.yield();}}
}public static class readobjectthread extends thread
}thread.yield();}}
}public static void main(string args) throws interruptedexception }}
產生id與name不同:
user [id=1498129300, name=1498129299]
user [id=1498129297, name=1498129294]
user [id=1498129295, name=1498129294]
解析:當寫執行緒寫物件,讀物件無法獲得鎖,因此等待,所以讀執行緒看不見乙個寫了一半的物件。當寫執行緒寫完id,很不幸被stop(),
此時物件id=1,而name=0,處於不一致狀態。而被終止的寫執行緒簡單的釋放鎖,讀執行緒爭奪鎖後,讀取資料,於是出現id與name不相等的情況。
那麼不用stop如何停止乙個執行緒?
我們自行決定執行緒何時退出就行了。
改進:public static class changeobjectthread extends thread
@override
public void run()
synchronized (u) catch (interruptedexception e)
u.setname(string.valueof(v));
}thread.yield();}}
}不會出現u的狀態錯誤了。
do sth
stopme stop!
user [id=1498130854, name=1498130854]
每天努力一點,每天都在進步!
jquery中stop的使用
一 stop 引數為空 程式暫停當前的步驟 如果當前步驟沒有全完執行完,也暫停 繼續後面的步驟,直到結束 二 stop xx 有引數 1 xx為false 通stop 相同,由此可見,stop 預設是false 2 xx為true 程式暫停當前的步驟 如果當前步驟沒有全完執行完,也暫停 不繼續後面的...
多個動畫暫停問題 stop 方法的使用
今天模仿某 的導航欄效果 最終結果 做這個效果遇到的點 1.給每個a繫結事件太麻煩,用了事件委託,由於剛看jq所以查到了 list delegate a mouseover function event 方法2.給這個小滑塊設定抖動效果,更動感一些 用了兩個animate算上最終定位用了三個anim...
C Vector的使用誤區
初始化vector並傳引用到dll中,dll中為該引用新增節點,vector記憶體釋放時會報堆疊錯誤,原因?這個問題其實挺好避免的,說白了就是不要乙個模組new,另乙個模組delete,不要認為你的vector的節點資料在棧上,vector的本質就是乙個變長陣列,怎麼會在棧上呢,資料肯定是在堆上的,...