【Java】线程常用方法
【摘要】 1. 线程常用方法setName 设置线程名称,使之与参数name相同getName 返回该线程的名称start 使该线程开始执行;Java虚拟机底层调用该线程的start0方法run 调用线程对象run方法;setPriority 更改线程的优先级getPriority 获取线程的优先级sleep 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)interrupt 中断线程 2. 注...
1. 线程常用方法
- setName 设置线程名称,使之与参数
name
相同 - getName 返回该线程的名称
- start 使该线程开始执行;Java虚拟机底层调用该线程的
start0
方法 - run 调用线程对象
run
方法; - setPriority 更改线程的优先级
- getPriority 获取线程的优先级
- sleep 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)
- interrupt 中断线程
2. 注意事项和细节
start
:底层会创建新的线程,调用run
,run
就是一个简单的方法调用,不会启动新线程- 线程优先级的范围
interrupt
:中断线程,但并没有真正的结束线程。所以一般用于中断正在休眠线程sleep
:线程的静态方法,使当前线程休眠
3. 案例演示
interrupt
不是终止线程,而是中断线程。- 如下:在循环10次吃东西的子进程,然后主线程在每隔1秒打印5次hi,接着使用 interrupt 方法中断子线程休眠,当
t.interrupt();
时,就会被异常捕获中断子进程休眠的20秒,这个时候子线程还没有休眠完20秒就被中断,中断后再继续循环10次吃东西,相当于子进程提前结束休眠的时间。
public class ThreadMethod01 {
public static void main(String[] args) throws InterruptedException {
//测试相关的方法
T t = new T();
t.setName("jack");
t.setPriority(Thread.MIN_PRIORITY);//设置优先级为 1
t.start();//启动子线程
//主线程打印5次hi ,然后就中断 子线程的休眠
for(int i = 0; i < 5; i++) {
Thread.sleep(1000);
System.out.println("hi " + i);
}
System.out.println(t.getName() + " 线程的优先级 =" + t.getPriority());//1
t.interrupt();//当执行到这里,就会中断 t线程的休眠.
}
}
class T extends Thread { //自定义的线程类
@Override
public void run() {
while (true) {
for (int i = 0; i < 10; i++) {
//Thread.currentThread().getName() 获取当前线程的名称
System.out.println(Thread.currentThread().getName() + " 吃东西~~~" + i);
}
try {
System.out.println(Thread.currentThread().getName() + " 休眠中~~~");
Thread.sleep(20000);//20秒
} catch (InterruptedException e) {
//当该线程执行到一个interrupt 方法时,就会catch 一个 异常, 可以加入自己的业务代码
//InterruptedException 是捕获到一个中断异常.
System.out.println(Thread.currentThread().getName() + "被 interrupt了");
}
}
}
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)