Java多线程-线程属性
# Java多线程06-线程属性
属性名称 | 用途 |
---|---|
编号(ID) | 每个线程有自己的ID,用于表示不同的线程 |
名称(name) | 作用让用户或程序员在开发和调试过程重区分每个不同的线程 |
是否为守护线程 (isDaemon) | true为守护线程,false为非守护线程(用户线程) |
优先级 (Priority) | 优先级是告诉线程调度器那些线程多运行,那些线程少运行。 |
# 线程ID
Java主线程ID从1开始,创建的子线程并非从2开始。
public class Id {
public static void main(String[] args) {
Thread thread = new Thread();
System.out.println("主线程id:" + Thread.currentThread().getId());
System.out.println("子线程id:" + thread.getId());
}
}
由于除了main主线程外,jvm还会创建很多其他子线程,所以我们创建的这个线程id并非是2。
相关源码:
private static synchronized long nextThreadID() {
return ++threadSeqNumber;
}
# 线程名
如果线程初始化的时候没有设置名字,java默认会按照一定规则来给线程赋予名字。
public Thread() {
init(null, null, "Thread-" + nextThreadNum(), 0);
}
private static synchronized int nextThreadNum() {
return threadInitNumber++;
}
初始化线程的时候,尽量给线程设置好名字,方便日后日志检查。
# 守护线程
作用:给用户线程提供服务
三个特性:
- 线程类型默认继承自父线程。
- 守护线程通常是由JVM启动的。
- 不影响JVM退出
# 线程优先级
线程有10个级别,线程默认是为5。
/**
* The minimum priority that a thread can have.
*/
public final static int MIN_PRIORITY = 1;
/**
* The default priority that is assigned to a thread.
*/
public final static int NORM_PRIORITY = 5;
/**
* The maximum priority that a thread can have.
*/
public final static int MAX_PRIORITY = 10;
由于不同操作系统的线程优先级不一样,所以程序设计不应依赖于优先级。
上次更新: 2024/06/29, 15:13:44