Thread类常见方法:
创建、启动线程、终止线程、线程等待、获取线程实例、线程休眠
1.关于如何创建线程,在专栏的上一篇文章已经谈到了有5中创建线程的方式。
2.启动线程(t.start):调用 start 方法, 才在操作系统的底层创建出一个线程。
3.终止线程
停止线程的方式目前常见的有两种方法:
1. 通过共享的标记来进行沟通(需要给标志位上加 volatile 关键字)
2. 调用 interrupt()方法来通知
thread 收到通知的方式有两种:
1. 如果线程因为调用 wait/join/sleep 等方法而阻塞挂起,则以 InterruptedException 异常的形式通知,清除中断标志。当出现 InterruptedException 的时候, 要不要结束线程取决于 catch 中代码的写法,可以选择忽略这个异常, 也可以结束线程。
2.当线程没有阻塞时,那么这个时候只是内部的一个中断标志被设置,thread 可以通过
Thread.interrupted() 判断当前线程的中断标志被设置,清除中断标志。
Thread.currentThread().isInterrupted() 判断指定线程的中断标志被设置,不清除中断标志。
4.线程等待(join)
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正在阻塞队列中