此线程在可中断的IO操作中被阻塞的对象,阻塞程序的中断方法应该在设置了这个线程中断状态之后被调用
常量 /** * 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;
数据类型
作用
MIN_PRIORITY
int
线程最低优先级
NORM_PRIORITY
int
分配给线程的默认优先级
MAX_PRIORITY
int
线程最大优先级
Thread构造方法从源码看出Thread类一共有9个构造方法,除第三个为default修饰【同包可用】,其他都是public
文章插图
作用
Thread()
分配新的Thread对象
Thread(Runnable target)
传入Runnable接口实现类,之后由JVM启动线程
Thread(Runnable target, AccessControlContext acc)
在传入Runnable的时候还可以指定AccessControlContext
Thread(ThreadGroup group, Runnable target)
指定线程组和Runnable接口
Thread(String name)
指定线程名字,默认是【Thread-下一个线程编号,从0开始】
Thread(ThreadGroup group, String name)
指定线程组和线程名字
Thread(Runnable target, String name)
指定Runnable接口和线程名
Thread(ThreadGroup group, Runnable target, String name)
指定线程组,Runnable接口和线程名
Thread(ThreadGroup group, Runnable target, String name,long stackSize)
指定线程组,Runnable接口,线程名和此线程请求的堆栈大小,默认为0
Thread常用方法
返回值类型
作用
start()
void
启动线程
run()
void
重写的Runnable接口方法,封装线程的功能体
currentThread()
Thread
静态方法,获取当前线程
getName()
String
获取线程名
setName(String name)
void
设置线程名
yield()
void
主动释放当前线程的执行权
join()
void
在线程中插入执行另一个线程,该线程被阻塞,直到插入执行的线程完全执行完毕以后,该线程才继续执行下去
sleep(long millis)
void
线程休眠一段时间
isAlive()
boolean
判断线程是否还存活
isDaemon()
boolean
判断是否为守护线程
stop()
void
过时方法 。当执行此方法时,强制结束当前线程,因过于粗暴,会引发很多问题所以弃用
setDaemon(boolean on)
void
设置为守护线程
getPriority()
int
获取线程优先级
setPriority(int newPriority)
void
设置线程优先级
设置线程名实现类:
public class RunnableImpl implements Runnable{@Overridepublic void run() {// 输出10以内偶数for (int i = 0; i < 10; i++) {if (i % 2 == 0){// 获取当前线程Thread thread = Thread.currentThread();// 获取线程名String threadName = thread.getName();System.out.println(threadName + "===>" + i);}}}}
测试类:public class RunnableMain {public static void main(String[] args) {// 1、创建实现类对象RunnableImpl runnable = new RunnableImpl();// 2、 创建线程对象,并指定线程名Thread t1 = new Thread(runnable, "线程1");// 3、启动线程t1.start();System.out.println(Thread.currentThread().getName() + "主线程");}}
运行结果:文章插图
或者通过setName()方法设置线程名
public class RunnableMain {public static void main(String[] args) {// 1、创建实现类对象RunnableImpl runnable = new RunnableImpl();// 2、 创建线程对象,不指定名字Thread t1 = new Thread(runnable);// 设置线程名t1.setName("线程1");// 3、启动线程t1.start();System.out.println(Thread.currentThread().getName() + "主线程");}}
如果不设置线程名,默认为【"Thread-" + nextThreadNum()】,nextThreadNum方法使用 threadInitNumber静态变量,默认从0开始,每次+1
推荐阅读
- 广州医养结合的养老院 老年公寓和养老院设计
- 叔本华生平和著作 叔本华的书
- 做好传帮带工作 以身作则团结合作传帮带是什么意思
- 论语是一部什么体的著作 论语是一部什么体散文
- 岳云鹏|岳云鹏相声太无聊?若结合背后安排的用意,就会佩服他的能力
- 长短句的表达效果 长短句结合的作用阅读理解
- 吴承恩人物解析及著作 吴承恩是哪个朝代的小说家
- 王一博|王一博分饰两角舞动双生,国风与街舞的结合,别有一番风味
- 面是什么意思(点面结合的面是什么意思)
- 鹤唳华亭|《鹤唳华亭》,完成率很高,将风格与文学结合在一起