多线程的常用操作方法

线程的命名与取得

所有的线程程序的执行,每一次都是不同的运行结果,因为他会根据自己的情况进行资源的抢占与分配,所以如果区分每一个线程,必须依靠线程的名字。对于线程的名字,一般会在其启动之前进行定义,不建议对已经启动的线程更改名称,或者是为不同的线程设置重名的情况。
如果要进行线程名称的更改,可以使用Thread类的如下方法:

  • 构造方法:public Thread(Runnable target,String name)
  • 设置名字:public final void setName(String name);
  • 取得名字:public final String getName();
    观察线程的名字
package com.yangwishe64.threadAndProcess;

public class ThreadName {
	public static void main(String[] args) {
		MyThread1 m1=new MyThread1();
		System.out.println(new Thread(m1).getName());
		System.out.println(new Thread(m1).getName());
		System.out.println(new Thread(m1).getName());
	}
	
}
class MyThread1 extends Thread{

	@Override
	public void run() {
		
	}
}

运行结果
多线程的常用操作方法
如果在实例化Thread类对象的时候没有为其设置名字,那么会自动的进行编号命名,就是说保证线程对象的名字不重复。

这些方法都是Thread类里面的,可是如果换回线程类Runnable子类,并没有继承Thread类,如果要想取得线程名字,能够取得的就是当前执行本方法的线程名字。所以在Thread类里面,提供有一个方法:
Thread.currentThread();
多线程的常用操作方法主方法就是一个线程(main线程),那么所有在主方法上创建的线程实际上都可以将其表示为子线程。
线程其实一直都存在,主方法就是主线程
每当使用java语言去解释一个java类的时候,就相当于启动了一个新的进程,而main只是新进程上的子线程而已
问:每个jvm进程启动时候至少启动几个线程?

  • main主线程
  • gc线程
    多线程的常用操作方法默认情况下,在休眠的时候如果设置了多了线程对象,那么所有的线程对象将一起进入run()方法里面,但其实是有顺序的。