看板 java 關於我們 聯絡資訊
※ 引述《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)
AtarashiAko:我覺得一個晚上應該不夠吧XD 12/02 03:24