Java 线程的默认命名约定

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系统中运行

输出: 螺纹[螺纹-0,5,主螺纹] 线程-0 螺纹[螺纹-1,5,主螺纹] 线程-1

输出: 螺纹[螺纹-1,5,主螺纹] 螺纹-3 线程-1 螺纹[螺纹-3,5,主螺纹]

现在,我有两个问题

  • 当使用具有类名(扩展线程)构造函数的新关键字创建线程时,线程命名为整数,以0、1、2、3开头。。(n-1)。 但当它是用传递类名(扩展线程)作为参数的线程构造函数直接创建的时,线程命名是奇数,以1,3,5..(2n-1)开头
  • 为什么会显示此行为,或者它对于平台是否为常量? (我在windows系统中运行了这个程序)。 或者,对于不同的平台,它可能会显示不同的行为

  • 每当我们打印任何线程对象时,为什么线程的优先级总是5 分配给线程的默认优先级为NORM_priority。 那么,5是NORM_优先级的值吗

    当使用具有类名(扩展线程)构造函数的新关键字创建线程时,线程命名为整数,以0、1、2、3开头。。(n-1)。但当它是用传递类名(扩展线程)作为参数的线程构造函数直接创建的时,线程命名是奇数,以1,3,5..(2n-1)开头

    这是因为

    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);
    }
    }