欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 《Java核心技术I》线程状态

《Java核心技术I》线程状态

2025/5/16 23:45:40 来源:https://blog.csdn.net/qq_36324341/article/details/144198419  浏览:    关键词:《Java核心技术I》线程状态

12.2 线程状态

线程可以有6种状态:

  • New(新建)
  • Runnable(可运行)
  • Blocked(阻塞)
  • Waiting(等待)
  • Timed waiting(计时等待)
  • Terminated(终止)

确定当前线程的状态,只需要调用getState()方法。

12.2.1 新建线程

当new创建一个线程时,线程还未运行,意味着它的状态是新建(new)。

12.2.2 可运行线程

调用start方法,线程处于可运行(runnable)状态,可能正在运行也可能还没有运行。

抢占式争夺CPU的时间片。

java.lang.Thread 1.0

  • static void yield(),是当前正在执行的线程向另一个线程交出运行权,这是静态方法。

12.2.3 阻塞和等待线程

阻塞或等待,此时不活动,不运行任何代码,消耗资源最小,有线程调度器重新激活这个线程。

  • 一线程试图获取一内部对象锁(并发包中的Lock),此锁被其他线程占有,该线程会被阻塞,当其他线程都释放了这个锁,并且线程调度器允许该线程持有这个锁时,它将变成非阻塞状态。
  • 等待状态,当前线程等待另一个线程通知调度器出现一个条件,调用Object.wait方法或Thread.join方法,或者等待java.util.concurrent库中的Lock或Condition会出现,实际上阻塞和等待状态区别不大。
  • 有几个方法有超时参数,调用这些会让线程进入计时等待(timed waiting)状态。这一状态一直保持到超时期满或接收到适当的通知,带有超时参数的方法有Thread.sleep和计时版的Object.wait、Thread.join、Lock.tryLock以及Condition.await。

线程状态图

12.2.4 终止线程

以下两个原因终止:

  • run方法正常退出,现成自然终止
  • 因为一个没有捕获的异常终止了run方法,使线程意外终止。

java.lang.Thread 1.0

  • void join(),等待终止指定的线程。
  • void join(long millis)等待指定的线程终止或者等待经过指定的毫秒数。
  • Thread.State getState() 5,得到这个线程的状态,取值为NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WATING,TERMINATED.
  • void stop(),停止该线程,这个方法已废弃。
  • void resume(),恢复线程,这个方法只能调用suspend()之后,该方法已废弃。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词