Thread类常见方法:
创建、启动线程、终止线程、线程等待、获取线程实例、线程休眠
1.关于如何创建线程,在专栏的上一篇文章已经谈到了有5中创建线程的方式。
2.启动线程(t.start):调用 start 方法, 才在操作系统的底层创建出一个线程。
3.终止线程
停止线程的方式目前常见的有两种方法:
1. 通过共享的标记来进行沟通(需要给标志位上加 volatile 关键字)
2. 调用 interrupt()方法来通知
方法 |
说明 |
public void interrupt() |
中断对象关联的线程,如果线程正在阻塞,则以异常方式通知,否则设置标志位 |
public static boolean interrupted() |
判断当前线程的中断标志位是否设置,调用后清除标志位 |
public boolean isInterrupted() |
判断对象关联的线程的标志位是否设置,调用后不清除标志位 |
thread 收到通知的方式有两种:
1. 如果线程因为调用 wait/join/sleep 等方法而阻塞挂起,则以 InterruptedException 异常的形式通知,清除中断标志。当出现 InterruptedException 的时候, 要不要结束线程取决于 catch 中代码的写法,可以选择忽略这个异常, 也可以结束线程。
2.当线程没有阻塞时,那么这个时候只是内部的一个中断标志被设置,thread 可以通过
Thread.interrupted() 判断当前线程的中断标志被设置,清除中断标志。
Thread.currentThread().isInterrupted() 判断指定线程的中断标志被设置,不清除中断标志。
4.线程等待(join)
方法 |
说明 |
public void join() |
等待线程结束 (死等) |
public void join(long millis) |
等待线程结束,最多等 millis 毫秒 |
5.获取当前线程实例
public static Thread currentThread();(返回当前线程对象的引用)
public class ThreadDemo {
public static void main(String[] args) {
Thread thread = Thread.currentThread();
System.out.println(thread.getName());
}
}
6.线程休眠
public static void sleep(long millis);(休眠当前线程 millis 毫秒)
public class ThreadDemo {
public static void main(String[] args) throws InterruptedException {
Thread.sleep(3 * 1000);
}
}
线程的状态:
1.NEW创建了Thread对象,但是还没调用start(内核里还没创建对应PCB)
2.TERMINATED表示内核中的pcb已经执行完毕了,但是Thread对象还在
3.RUNNABLE可运行的(正在运行或者就绪)
4.阻塞(WAITING/TIMED_WAITING/BLOCKED),表示线程pcb正在阻塞队列中
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/94417.html