b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

多线程——线程的几种状态 (Java API版)

电脑杂谈  发布时间:2019-08-27 18:03:53  来源:网络整理

多线程死锁的伪代码_什么是线程死锁_c++ 线程死锁

以前学习操作系统这门课程的之后线程死锁的伪代码,对线程状态的学习是非常仔细的,仅限于表面的知道,在后续学习和使用的过程中,

我看到自己之前的认知与Java api中定义的泛型状态是有出入的,在使用过程中也会有很多误解,

所以按照java.lang.Thread.State中的具体定义和表明,进行了如下整理,作为自我小结和学习。

根据Java api,Java中泛型一共有如下6种状态,即NEW、RUNNABLE、BLOCKED、WAITING、TIME_WAITING、TERMINATED:

NEW: 新建状态多线程死锁的伪代码,指即将建立了线程对象,但是该线程已经开启,即还没有调用start()方法。根据Java api,定义如下:

Thread state for a thread which has not yet started

RUNNABLE: 按照字面翻译是“可运行的”, 但是按照Java api中的定义:

A thread in the runnable state is executing in the jvm but it may be waiting for other resources from the operating system such as processor

c++ 线程死锁_多线程死锁的伪代码_什么是线程死锁

因此,说该状况是“运行中”更正确,此外在该状况下线程有可能会因对操作系统的资源请求(例如IO请求)而进入期待中,

总之,该状况下出现的期待是与平台资源有关的,与锁无关。

BLOCKED:阻塞状况,根据Java api中的定义:

A thread in the blocked state is waiting for a monitor lock to enter a synchronized block/method or reenter a synchronized block/method after calling Object.wait()

这个状况出现在涉及到多个线程同步的问题中,线程等待获得锁并且开启临界区,因此,值得注意的是,

该状况的期待与上述runnable状态下中也许出现的期待,它们的引起原因是不同的。

总之,该状况下线程在期待开启临界区。

WAITING:等待状态,根据Java api,该状况的导致原因如下:

c++ 线程死锁_什么是线程死锁_多线程死锁的伪代码

A thread is in the waiting state due to calling one of the following methods:

Object.wait with no timeout

Thread.join with no timeout

LockSupport.park

因此,该状况通常发生在调用wait()、join()和park()的情况。

根据Java api,对改状态的定义如下:

A thread in the waiting state is waiting for another thread to perform a particular action. For example, a thread that has called Object.wait() on an object is waiting for another thread to call Object.notify() or Object.notifyAll() on that object. A thread that has called Thread.join() is waiting for a specified thread to terminate

这个状况是指线程在是获得了锁以后,由于上述步骤被读取,从而造成线程失去对锁的所有权,进入等待队列,等待其它线程执行相应的动作。

什么是线程死锁_c++ 线程死锁_多线程死锁的伪代码

参看wait()方法和join方法的介绍,未完待续~

TIME_WAITING:有限时间的期待状态,根据Java api的定义,该状况的导致原因如下:

Thread state for a waiting thread with a specified waiting time. A thread is in the timed waiting state due to calling one of the following methods with a specified positive waiting time:

Thread.sleep

Object.wait with timeout

Thread.join with timeout

LockSupport.parkNanos

LockSupport.parkUntil

c++ 线程死锁_什么是线程死锁_多线程死锁的伪代码

因此,该状况通常发生在调用

sleep(long millis)、wait(long timeout)、join(long millis)、parkNanos(long nanos)和 parkUntil(long deadline)的情况。

TERMINATED:终止状态/死亡状况,指线程执行完毕,该线程的run()方法已执行完毕。根据Java api,定义如下:

The thread has completed execution.

其实,根据API中的英文定义,很容易体会和理解线程的各个状态是哪个样子的,反而硬是要翻译过来的话,却难以正确表述出来。

根据上述内容画的流程图如下:

这里写图片描述

参考链接:,

参考书籍:《Java多线程编程核心技术》,感谢作者~


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-120755-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 潘迎紫
        潘迎紫

        一直就比大陆人有更高品质的生活和更公平法治的社会环境

        • 陈红
          陈红

          集体向520万刷起来集体心意送给烊烊生日礼物#易烊千玺##易烊千玺真的很不错##全员即刻加速1128迈#

      热点图片
      拼命载入中...