专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 线程中的常用10种方法

线程中的常用10种方法

更新时间:2020-11-24 17:27:25 来源:赢咖4 浏览1739次

在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多线程教程里面的各种方法实例一起学习效果更佳哦!


提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>