教程-1演示的最簡單的使用執行緒的方法,執行緒的使用也會帶來一些麻煩,下面來看一些例子,同時學習synchronized關鍵字的使用。
//資訊輸出類
public class showinfo
}//執行緒演示類
public class threadtest implements runnable
@override public void run()
catch (interruptedexception e) {}
}public static void main(string args)
}執行threadtest類看看,是不是資訊輸出格式亂掉了?結果是這樣的:
start====資訊01start====資訊02====end
====end
原因就是兩個執行緒是交替進行的,它們都呼叫了showinfo這個物件的show方法,大家可以想象:如果showinfo這個類不單單是顯示資料,而是修改乙個集合,或者陣列等等包含資料的物件,那麼可能得到了錯誤的結果。
vector和arraylist的區別之一就是arraylist不保證執行緒安全,指的就是這種情況,那麼怎麼解決呢?請修改showinfo:
public class showinfo
}再執行threadtest類看看,是不是這樣的結果:
start====資訊01====end
start====資訊02====end
現在對了吧,當然同步是會帶來效能上面的開銷,所以建議用arraylist替換vector。而且很可能showinfo這個類不是你寫的,這個時候要怎麼處理呢?請看最終的版本:
public class showinfo
}public class threadtest implements runnable
@override public void run()
}catch (interruptedexception e) {}
}public static void main(string args)
}結果和第二次的還是一樣對吧,使用synchronized(要同步的物件)這樣的方法可以是任意物件方法都變成同步的,這是比較完美的處理方法。到此,第二課程也講完了。
java執行緒使用入門簡明教程 3
這是關於執行緒最後的一節了,本節是要簡單的說明一下object類的wait和notify方法。只用乙個簡單的例子來說明 public class threadtest implements runnable override public void run catch interruptedexce...
DuiLib入門簡明教程
2013 duilib入門教程彙總 2013 duilib入門簡明教程 前言 1 2013 duilib入門簡明教程 vs環境配置 2 2013 duilib入門簡明教程 第乙個程式 hello world 3 2013 duilib入門簡明教程 響應按鈕事件 4 2013 duilib入門簡明教程...
AWK 入門簡明教程
awk begin pattern end fileawk 指令碼通常由3部分組成。begin end 和帶模式匹配選項的常見語句塊。這3個部分都是可 選項,在指令碼中可省略任意部分。awk 指令碼包含在單引號之間 awk begin end 檔案的內容格式如下,在命令使用awk f readawk...