更新时间:2020-11-24 17:27:25 来源:极悦 浏览2002次
在Java多线程中,有许多的方法存在,以便实现线程的各种功能。这其中包含有静态方法以及一些对象方法,本文就为学习多线程的小伙伴介绍10种线程中的常用方法,为我们学习多线程中方法的使用打下基础。
下面就是线程中常用的10种方法:
1.start():
在使用 new 关键字创建一个线程后(New 状态),并不表现出任何的线程活动状态(非 New、Terminated 状态,可以使用 isAlive 方法检测线程的活动状态),CPU 也不会执行线程中的代码。
只有在 start() 方法执行后,才表示这个线程可运行了(Runnable 状态),至于何时真正运行还要看线程调度器的调度。
在线程死亡后,不要再次调用 start() 方法。只能对新建状态的线程调用且只能调用一次 start() 方法,否则将抛出 IllegalThreadStateException 异常。
2.join():
在很多情况下,主线程创建并启动了线程,如果子线程中药进行大量耗时运算,主线程往往将早于子线程结束之前结束。这时,如果主线程想等待子线程执行完成之后再结束,比如子线程处理一个数据,主线程要取得这个数据中的值,就要用到join()方法了。方法join()的作用是等待线程对象销毁。
3.run():
启动线程是 start() 方法,而不是 run() 方法。run()方法是不需要用户来调用的,当通过start方法启动一个线程之后,当线程获得了CPU执行时间,便进入run方法体去执行具体的任务。注意,继承Thread类必须重写run方法,在run方法中定义具体要执行的任务。
4.sleep():
主动放弃占用的处理器资源,该线程进入阻塞状态(Blocked 状态),指定的睡眠时间超时后,线程进入就绪状态(Runnable),等待线程调度器的调用。
5.yield():
主动放弃占用的处理器资源,线程直接进入就绪状态(Runnable),等待线程调度器的调用。
可能的情况是当线程使用 yield 方法放弃执行后,线程调度器又将该线程调度执行。
6.interrupt():
没有任何强制线程终止的方法,这个方法只是请求线程终止,而实际上线程并不一定会终止,在调用 sleep() 方法时可能会出现 InterruptedException 异常,你可能会想在异常捕获后(try-catch语句中的catch)请求线程终止,而更好的选择是不处理这个异常,抛给调用者处理,所以这个方法并没有实际的用途,还有 isInterrupted() 方法检查线程是否被中断。
7.setDaemon():
设置守护进程,该方法必须在 start() 方法之前调用,判断一个线程是不是守护线程,可以使用 isDaemon() 方法判断。
8.setPriority():
设置线程的优先级,理论上来说,线程优先级高的线程更容易被执行,但也要结合具体的系统。
每个线程默认的优先级和父线程(如 main 线程、普通优先级)的优先级相同,线程优先级区间为 1~10,三个静态变量:MIN_PRIORITY = 1、NORM_PRIORITY = 5、MAX_PRIORITY = 10。
使用 getPriority() 方法可以查看线程的优先级。
9.isAlive():
检查线程是否处于活动状态,如果线程处于就绪、运行、阻塞状态,方法返回 true,如果线程处于新建和死亡状态,方法返回 false。
10.getId()
getId()的作用是取得线程的唯一标识
public class Test {
public static void main(String[] args) {
Thread t= Thread.currentThread();
System.out.println(t.getName()+" "+t.getId());
}
}
//main 1
以上就是线程中的常用10种方法,倘若你是初入Java的入门学习者,可能还需要更加细致的讲解,配合本站的Java多线程教程里面的各种方法实例一起学习效果更佳哦!
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习