java執行緒使用入門簡明教程 2

2021-04-13 22:17:26 字數 1112 閱讀 7117

教程-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...