8.3 线程控制

线程中断

方法:void interrupt():中断线程(本质没有中断操作,只是给线程对象加了个标记,设置其中断状态为true);

                                     (不能中断正在运行过程中的线程,只能中断阻塞过程中的线程)

           static boolean interrupted(): 返回当前线程是否已经中断;

           boolean isInterrupted(): 返回线程是否已经中断;

8.3 线程控制_第1张图片
线程中断

线程让步

作用:用于正在执行的线程,在某些情况下让出CPU资源,让给其它线程执行;

            (如果持有同步锁,并不会释放同步锁资源)

方法:static void yield():暂停当前正在执行的线程对象,并执行其他线程

8.3 线程控制_第2张图片
线程让步

线程睡眠

方法:static void sleep(long millis):让当前正在执行的线程休眠(暂停执行)指定的毫秒数;

           static void sleep(long millis, int nanos):线程休眠 毫秒数+纳秒数;

8.3 线程控制_第3张图片
线程休眠

线程合并

作用:所谓合并,就是等待其它线程执行完,再执行当前线程,执行起来的效果就好像把其它线程合并到当前线程执行一样;

            (优先执行调用join方法的线程,最后执行当前线程)

方法:void join():等待该线程终止;

           void join(long millis):等待该线程终止的时间最长为 millis 毫秒;

           void join(long millis, int nanos):等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒;

8.3 线程控制_第4张图片
线程合并

sleep和wait方法区别

sleep:1.Thread的方法

             2.让出CPU,时间到了再回到该线程继续执行,不会释放同步锁资源

             3.任何地方使用

wait:1.Object的方法

          2.释放同步锁资源,进入等待队列,需要notify唤醒(唤醒后只是得到竞争同步锁的资格)  

          3.只能在同步方法或同步块中使用(因为要释放同步资源锁)


你可能感兴趣的:(8.3 线程控制)