Thread的常用方法
方法 | 说明 |
---|---|
yield() | 释放当前cpu的执行权。不会释放锁 |
join() | 将某个线程插入到当前线程,使当前线程进入阻塞状态,直到插入的线程执行完,当前线程才结束阻塞状态。 |
sleep() | 使当前线程进入阻塞状态,阻塞指定的毫秒数。 不会释放锁 |
interrupt() | 中断线程。只能中断阻塞过程中的线程而不能中断正在运行过程中的线程。如sleep(); |
wait() | 使当前线程进入阻塞状态,并释放同步锁 |
notify() | 唤醒一个wait线程。 |
notifyAll() | 唤醒所有wait线程 |
注意:wait、notify和notifyAll方法是Object类的final native方法。它们只能在同步方法或同步块内部调用,否则会出现IllegalMonitorStateException异常
sleep()和wait()的异同:
相同:都可以使当前线程进入阻塞状态。
不同:
- 声明的位置不同,sleep声明在Thread类中,wait声明在Object中。
- 调用的要求不同:sleep任何场景下都可以调用,而wait只能在同步方法或同步块内部中调用。
- wait会主动释放锁,sleep不会释放锁。
线程的生命周期
线程的优先级
- MAX_PRIORITY=10
- MIN_PRIORITY=1
- NORM_PRIORITY=5 默认优先级
可通过getPriority()获取线程优先级,setPriority()设置线程优先级。
注意:高优先级只是高概率被执行,并不意味着高优先级的程序被执行完,低概率的才执行。