Java 线程的默认命名约定
输出: 螺纹[螺纹-0,5,主螺纹] 线程-0 螺纹[螺纹-1,5,主螺纹] 线程-1 输出: 螺纹[螺纹-1,5,主螺纹] 螺纹-3 线程-1 螺纹[螺纹-3,5,主螺纹] 现在,我有两个问题Java 线程的默认命名约定,java,multithreading,Java,Multithreading,输出: 螺纹[螺纹-0,5,主螺纹] 线程-0 螺纹[螺纹-1,5,主螺纹] 线程-1 输出: 螺纹[螺纹-1,5,主螺纹] 螺纹-3 线程-1 螺纹[螺纹-3,5,主螺纹] 现在,我有两个问题 当使用具有类名(扩展线程)构造函数的新关键字创建线程时,线程命名为整数,以0、1、2、3开头。。(n-1)。 但当它是用传递类名(扩展线程)作为参数的线程构造函数直接创建的时,线程命名是奇数,以1,3,5..(2n-1)开头 为什么会显示此行为,或者它对于平台是否为常量? (我在windows系统中运行
threadt3=新线程(newthreadoddnaming())代码>
Thread t4=新线程(new threadoddname())代码>
创建总共4个线程。这就是为什么你会看到这种行为
每当我们打印任何线程对象时,为什么线程的优先级总是5
因为Thread类的默认优先级是NORM_priority
public final static int NORM\u PRIORITY=5代码>
您可以在线程的源代码中看到这一点
请记住,新创建的线程的优先级始终与其创建者的优先级相同。因此,如果您有一个优先级为4的线程创建一个新线程,那么新线程将是优先级为4的,除非使用setPriority()
干杯 因为新线程(new ThreadOddNaming())
创建了两个线程实例。
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);
}
}
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);
}
}