多個執行緒同時對 hashtable 進行新增或刪除操作,可能會引起 hashtable 的錯誤,所以對它進行同步是必不可少的。同步的方法都有哪些呢?
1、使用 hashtable.synchronized 同步
hashtable ht = new hashtable();
ht = hashtable.synchronized(ht);
或者一步實現:
hashtable ht = hashtable.synchronized(new hashtable());
使用 hashtable.synchronized 比較安全方便,但程式開銷也比較大。檢視編譯後的 ildasm **可知,此方法實際上也新增了同步**,不過是交給 .net 自動實現罷了。
2、使用 hashtable.syncroot 同步
hashtable ht = new hashtable();
lock(ht.syncroot)
此方法是通過鎖住 hashtable 物件來實現同步,即當有執行緒在操作 hashtable 時,其它執行緒只能等待,當前乙個執行緒操作完畢,等待的執行緒才能去操作。一般來說,只要鎖住對 hashtable 的新增、修改和刪除操作,就不會發生錯誤。
兩方法,至於要使用那種,看自己的熟悉程度,如果自己對同步相關知識比較熟悉或程式要求效率比較高,那就使用第2種方法;如對同步知道了解較少,對程式效率要求又不是很高,就使用第1方法,畢竟方便快捷。
Redhat nis client兩種接入方式
redhat nis client兩種接入方式 在redhat上nis client有兩種方式接入nis伺服器 etc nsswitch.conf和system config authentication 通過 etc nsswitch.conf的方式使用者只能通過yppasswd進行修改密碼且無法...
python threading 兩種建立方式
作用 建立在thread模組之上,可以更容易地管理多個執行執行緒。通過使用執行緒,程式可以在同乙個程序空間併發地執行多個操作。threading模組建立在thread的底層特性基礎上,可以更容易地完成執行緒處理。1 呼叫函式 要使用thread,最簡單的方法就是用乙個目標函式例項化乙個thread物...
兩種獲取Oracle Sequence的方法
前提 create table booking id integer not null,date made date,reserved until timestamp,price decimal 15,2 not null,purchase id integer,primary key id cre...