[問題] 新手Thread (執行緒問題)

看板java作者 (阿哲)時間13年前 (2012/11/22 17:35), 編輯推噓3(303)
留言6則, 4人參與, 最新討論串1/3 (看更多)
想說老師還沒教,就自己先看看,不過遇到了一些問題 以下為課本範例程式碼: //此程式是用來計算1+....+N的總合 /* 程式範例: Ch10_2_1.java */ class UserClass { // 宣告使用者類別 private int length; // 建構子 public UserClass(int length) { this.length = length; } // 計算總和 public int sum() { int temp = 0; for ( int i = 1; i <= length; i++ ) temp += i; return temp; } } // 執行緒類別, 實作Runnable介面 class UserThread extends UserClass implements Runnable { // 建構子 public UserThread(int length) { super(length); } // 執行執行緒 public void run() { System.out.println(Thread.currentThread() + "總和 = " + sum()); //這裏我就有問題了Thread.currentThread(),我看書上寫 類別方法,可以取得目前的執行緒物件s 老實說我不太懂他的意思 } } // 主類別 public class Ch10_2_1 { // 主程式 public static void main(String[] args) { System.out.println("執行緒: " + Thread.currentThread()); // 建立執行緒物件 UserThread ut1 = new UserThread(5); Thread t1 = new Thread(ut1, "執行緒A"); UserThread ut2 = new UserThread(4); Thread t2 = new Thread(ut2, "執行緒B"); // 啟動執行緒 t1.start(); t2.start(); } } 結果印出: 執行緒:Thread[main,5,main] Thread[執行緒 A,5,main]總和=15 Thread[執行緒 B,5,main]總和=10 //[執行緒 A,5,main] 這裏面第1個 執行緒 A (是名稱),那第2個"5"是指甚麼?! 而第3個 main是代表在主程式下執行?! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.254.242.179

11/22 17:44, , 1F
要找Thread.toString()的javadoc 這是優先級跟執行緒組
11/22 17:44, 1F

11/22 17:45, , 2F
請參考 Thread.toString() 的 source code
11/22 17:45, 2F

11/22 17:55, , 3F
叫他查source code太狠了吧..... XD
11/22 17:55, 3F
結果我打 System.out.println("t1="+t1.toString()); System.out.println("t2="+t2.toString()); 竟然結果和 System.out.println(Thread.currentThread()); 2種寫法幾乎完全一樣?! 所以[執行緒 A,5,main]分別指 執行緒名稱 優先權 群組名稱字串?! 是這樣對吧?! ※ 編輯: TWTRubiks 來自: 111.254.242.179 (11/22 18:07)

11/23 09:27, , 4F
就跟你說查 source code 了... 也未必會有最後一個
11/23 09:27, 4F

11/23 12:21, , 5F
是直接google嗎?還是說要去哪查?
11/23 12:21, 5F

文章代碼(AID): #1GhV758l (java)
文章代碼(AID): #1GhV758l (java)