[2025.1.16 JavaSE学习]线程常用方法

线程常用方法

  • setName:设置线程名称
  • getName:返回线程名称
  • start:使线程开始执行,JVM底层调用该线程的start0()方法
  • run:调用线程对象run方法
  • setPriority:更改线程优先级,三个级别:

image

  • getPriority:获取线程优先级
  • sleep:线程休眠
  • interrupt:中断线程,但并没有真正地结束线程(不是终止,是中断),一般用于中断正在休眠线程:
try{
	Thread.sleep(20000);
}catch(InterruptedException e){
	//捕获到一个中断异常,被唤醒
	//编写业务代码
}
  • yield:线程的让步,让出CPU,让其他线程执行,但是让步时间不确定,所以不一定让步成功
  • join:线程的插队,一旦插队成功,先执行插入的线程所有的任务
  • 用户线程和守护线程:
    • 用户线程:也叫工作线程,当线程的任务执行完或通知方式结束
    • 守护线程:一般为工作线程服务,当所有的用户线程结束,守护线程自动结束(常见的守护线程:垃圾回收机制),如何设置一个线程为守护线程:
public class Thread03{
	public static void main(String[] args){
		MyDaemonThread th = new MyDaemonThread();
		th.start();
		for(int i=0;i<=10;i++){
			Thread.sleep(1000);
		}
	}
}

class MyDaemonThread extends Thread{
	public void run(){
		while(true){
			try{
				Thread.sleep(50);
			}catch(InterruptedException e){
				e.printStackTrace();
			}
		}
	}
}

上述代码中,主线程结束后,th线程仍旧在执行,证明默认情况下不为守护线程,下述代码将子线程设置为守护线程:

public class Thread03{
	public static void main(String[] args){
		MyDaemonThread th = new MyDaemonThread();
		th.setDaemon(true);//一条语句即可
		th.start();
		for(int i=0;i<=10;i++){
			Thread.sleep(1000);
		}
	}
}

这样更改后,当主线程结束后,守护子线程也会结束

posted @ 2025-01-16 22:22  Luna-Evelyn  阅读(8)  评论(0)    收藏  举报