【发布时间】:2017-06-03 16:42:42
【问题描述】:
public class ThreadNaming extends Thread {
public void run(){
System.out.println(Thread.currentThread().getName());
}
public static void main(String args[]){
Thread t1 = new ThreadNaming();
Thread t2 = new ThreadNaming();
t1.start();
System.out.println(t1);
t2.start();
System.out.println(t2);
}
}
输出: 线程[Thread-0,5,main] 线程-0 线程[Thread-1,5,main] 线程 1
public class ThreadOddNaming extends Thread {
public void run(){
System.out.println(Thread.currentThread().getName());
}
public static void main(String args[]){
Thread t3 = new Thread(new ThreadOddNaming());
Thread t4 = new Thread(new ThreadOddNaming());
t3.start();
t4.start();
System.out.println(t3);
System.out.println(t4);
}
}
输出: 线程[Thread-1,5,main] 线程 3 线程 1 线程[Thread-3,5,main]
现在,我有两个问题。
- 当使用带有类名(扩展线程)构造函数的 new 关键字创建线程时,线程命名为以 0、1、2、3 .. (n-1) 开头的整数。 但是当它直接用Thread构造函数传递类名(扩展Thread)作为参数创建时,线程命名为奇数,以1,3,5..(2n-1)开头
为什么会显示这种行为,或者它对于平台是否是恒定的? (我在 Windows 系统中运行了这个程序)。 或者,它可能会针对不同的平台显示不同的行为?
- 每当我们打印任何线程对象时,为什么线程的优先级总是5。
分配给线程的默认优先级是 NORM_PRIORITY。 那么,5 是 NORM_PRIORITY 的值吗?
【问题讨论】:
-
因为
new Thread(new ThreadOddNaming())创建了两个Thread实例。
标签: java multithreading