為什麼這篇java多執行緒範例鄉民發文收入到精華區:因為在java多執行緒範例這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者Hiigara (西亞加拉)看板java標題Re: [問題] 新手Thread (執行緒問題)時...
※ 引述《TWTRubiks (阿哲)》之銘言:
: 想說老師還沒教,就自己先看看,不過遇到了一些問題
: 以下為課本範例程式碼:
http://pastebin.com/vMXvWb1m
結果好像沒人回答問題 A...
// 這裏我就有問題了Thread.currentThread(),我看書上寫
// 類別方法,可以取得目前的執行緒物件s
// 老實說我不太懂他的意思
這裡分成兩個部份各自簡單的來談,什麼是執行緒,跟Java 的 Thread 物件
一個執行緒(也就是英文寫作 thread 的那個東西)大致可以想成
「一件從頭循序執行到尾的工作」
例如一個廚師依照食譜的說明做一道菜的過程。
而今天我可能程式(廚房)裏面想要同時同時做兩三件工作,於是可憐的廚師就得要
一邊煮魚翅一邊削水果。
兩個執行緒彼此是不同步的,不一定誰會先做完誰會後做完。
就像魚翅什麼時候會燒焦跟水果削了幾顆,這兩者之間是沒有直接關聯的。
執行緒要討論還有很多鬼東西,不過先知道到這裡就好,剩下請洽恐龍本...
我絕對不會承認我只懂到這邊(遮臉
Java 為了方便寫程式的人管理多執行緒的程式,為程式設計師提供了一個 Thread 物件
管理執行續。當寫程式的人 new 一個 Thread 出來,並且呼叫該 Thread 的 start(),
Java 會啟動一個新的執行緒,並且用那個執行續來跑塞入的 Runnable 的 run()
可以看成 Java 把執行緒這件事情分成兩個部份:
- Runnable: 執行緒實際要執行的工作物件
- Thread: 執行緒管理員物件
而 Thread.currentThread(),他的功能是「取得現在這個執行緒的管理員物件」
這邊一個討論上可能出現的陷阱是,當其他寫 Java 的人講「thread」的時候
可能是指「執行緒」這個概念,也可能是指 Java 的 Thread 物件
還不熟的時候要多花一點心力去分辨這兩者
: 結果印出:
: 執行緒:Thread[main,5,main]
: Thread[執行緒 A,5,main]總和=15
: Thread[執行緒 B,5,main]總和=10
: //[執行緒 A,5,main] 這裏面第1個 執行緒 A (是名稱),那第2個"5"是指甚麼?!
: 而第3個 main是代表在主程式下執行?!
: 結果我打
: System.out.println("t1="+t1.toString());
: System.out.println("t2="+t2.toString());
: 竟然結果和
: System.out.println(Thread.currentThread());
: 2種寫法幾乎完全一樣?!
Thread t = Thread.currentThread();
System.out.println(t)
會呼叫到 out 這個 PrintStream 的 println(Object o)。
而餵給 println() 的參數是物件的時候,印出來的東西就會是該物件的 toString()
回傳的字串。
另,用字串跟某個物件相加的時候,結果也會是拿該字串跟物件的 toString() 吐出的
字串相接在一起的新字串
所以,不論是
System.out.println("執行緒: " + Thread.currentThread());
System.out.println("t2="+t2.toString());
System.out.println(Thread.currentThread());
最後結果印出來的東西中間都會有一段是該 Thread 物件的 toString() 的結果
於是你知道了,去找 Thread 的 toString() 的文件或許可以找到你要的答案
參照官方 Javadoc, Thread 的 toString()
http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#toString%28%29
Returns a string representation of this thread, including the thread's name,
priority, and thread group.
所以「Thread[main,5,main]」裡面,括號裏面的東西分別是
thread's name
priority
thread group
thread 的名稱感覺很直覺,至於優先權跟群組....看起來像是上面沒出現過的新名詞
不過至少有方向可以查了,對吧 :P
例如說 google
「java thread priority」「java 執行緒 優先權」
「java thread group」「java 執行緒 群組」
就能找到關於「那是什麼」的資訊
然後你會發現一個晚上就這樣不見了 :P
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.47.149.153
※ 編輯: Hiigara 來自: 114.47.149.153 (12/01 23:38)