作者TWTRubiks (阿哲)
看板java
标题[问题] 新手Thread (执行绪问题)
时间Thu Nov 22 17:34:58 2012
想说老师还没教,就自己先看看,不过遇到了一些问题
以下为课本范例程式码:
//此程式是用来计算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
1F:推 LaPass:要找Thread.toString()的javadoc 这是优先级跟执行绪组 11/22 17:44
2F:推 PsMonkey:请参考 Thread.toString() 的 source code 11/22 17:45
3F:推 LaPass:叫他查source code太狠了吧..... XD 11/22 17:55
结果我打
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)
4F:→ PsMonkey:就跟你说查 source code 了... 也未必会有最後一个 11/23 09:27
5F:→ TWTRubiks:是直接google吗?还是说要去哪查? 11/23 12:21