使用stop誤區

2021-08-03 09:45:15 字數 1236 閱讀 4011

我們使用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的本質就是乙個變長陣列,怎麼會在棧上呢,資料肯定是在堆上的,...