线程中断
方法:void interrupt():中断线程(本质没有中断操作,只是给线程对象加了个标记,设置其中断状态为true);
(不能中断正在运行过程中的线程,只能中断阻塞过程中的线程)
static boolean interrupted(): 返回当前线程是否已经中断;
boolean isInterrupted(): 返回线程是否已经中断;
线程中断线程让步
作用:用于正在执行的线程,在某些情况下让出CPU资源,让给其它线程执行;
(如果持有同步锁,并不会释放同步锁资源)
方法:static void yield():暂停当前正在执行的线程对象,并执行其他线程
线程让步线程睡眠
方法:static void sleep(long millis):让当前正在执行的线程休眠(暂停执行)指定的毫秒数;
static void sleep(long millis, int nanos):线程休眠 毫秒数+纳秒数;
线程休眠线程合并
作用:所谓合并,就是等待其它线程执行完,再执行当前线程,执行起来的效果就好像把其它线程合并到当前线程执行一样;
(优先执行调用join方法的线程,最后执行当前线程)
方法:void join():等待该线程终止;
void join(long millis):等待该线程终止的时间最长为 millis 毫秒;
void join(long millis, int nanos):等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒;
线程合并sleep和wait方法区别
sleep:1.Thread的方法
2.让出CPU,时间到了再回到该线程继续执行,不会释放同步锁资源
3.任何地方使用
wait:1.Object的方法
2.释放同步锁资源,进入等待队列,需要notify唤醒(唤醒后只是得到竞争同步锁的资格)
3.只能在同步方法或同步块中使用(因为要释放同步资源锁)
网友评论