当前位置: 首页 > 网络应用技术

一个文本说明Java的线程生命周期状态和调用线程状态后的常见方法

时间:2023-03-07 19:46:37 网络应用技术

  本文的主要重点是基于以下问题。在阅读之前,对问题的答案有什么想法?

  从操作系统的角度来看,线程的状态分为五种类型:初始状态,现成状态,操作状态,阻止状态和终止状态

  创建由线程创建函数创建的新线程。执行线程创建功能后,将返回一个线程标识符

  创建了操作系统中的线程,并且可以分配CPU资源,但是执行尚未开始

  通过CPU资源获得可以运行状态的线程后,该线程将被执行并输入此状态

  指由于事件而阻止线程的状态,并且处于悬挂状态。这次,线程将释放CPU资源,而阻止状态的线程没有机会获得使用权CPU。

  执行线程或发生错误后,输入终止状态

  作为参考,可以将Java线程的状态分为几个:

  它只是新创建的线程,并且没有呼叫方法可以在线程中启动代码。

  这里的运行状态等效于“就绪状态(就绪)和操作系统线程状态中的运行状态(运行)。

  扣押调度系统将被分配给准备执行时间胶片执行任务的线程。当用完芯片时,操作系统将根据优先级选择其他线程。A线程可能等待运行或运行或在系统级别运行。但是这些状态可以视为JVM的运行状态。

  该状态仅与锁有关。国家唤醒后,它将由于需要竞争而进入州。

  Java中的状态与操作系统中的阻塞状态不同。Java中的阻塞必须与锁有关。

  从操作系统的角度来看,由于调用阻止API(例如IO操作),该线程将进入阻止状态。在JVM下,该线程的状态是什么?我不知道是否有大个子解释。

  相关信息的解释如下:

  对于JVM,等待CPU使用右侧(操作系统中的线程)和IO操作的等待(操作系统中的线程处于休眠状态)。

  那是一个状态吗?

  一个线程正在等待另一个线程执行特定的操作以唤醒此线程。觉醒的线程将进入状态并重新加入。

  随着时间的推移等待,让CPU出去,不会等待其他线程唤醒的时间。可以自动唤醒时间

  线程已终止,可能是正常的,也可能是异常终止。通常,可以终止的操作如下所示:

  Java线程(块),结束状态(等待)和时间限制等待状态(TIMED_WAITING)中的阻止状态是一种状态,即通用线程的生命周期中的睡眠状态。只要Java中的螺纹在这三个状态下,该线程就没有使用CPU的权利。

  如何调用线程对象

  只有一种可能性:输入同步修改的方法和代码块,但是由于它无法获得锁定志愿者,因此它变成了一个块。

  基本上,这是一种调用超时参数的方法,如下所示:

  对象类:

  线程类:

  使用同步对象调用此方法以使当前线程在等待状态中,直到其他线程调用同步对象的方法或方法以唤醒线程,或者超过设置的超时时间。

  该方法的两个参数:

  有一些注意点:

  使用同步对象调用此方法。从对象等待池中,随机选择一个线程以删除并将其放入锁定徽标中,然后等待池。只有锁定徽标中的线程才能获得锁定徽标。在当前线程放弃对象的锁之前,觉醒线将不会继续,他们准备随时争夺锁的所有权。

  使用同步对象调用此方法来唤醒池中的所有等待线,并让它们连接锁定符号并等待池中的竞争锁。

  并且只能在语句中使用,但是如果它用于同步,我们如何实现这三种方法的效果?解决方案是获得类对象,然后与上述三种方法相对应。

  启动线程,使用线程的实例调用此方法,JVM将调用此线程的运行方法。

  JDK18描述如下所示:

  

  根据定时设备和调度程序的准确性和准确性,使当前执行的线程休眠(临时停止执行)在指定的毫秒内(暂时停止执行)。该线程不会丢失任何监视器的所有权。

  JDK18描述如下所示:

  调度程序的提示是,当前线程愿意产生其当前对处理器的使用。调度程序可以自由忽略此提示。

  

  

  此方法是一种尝试更改操作系统线程调度的方法。调用此方法只是将当前线程返回到可执行状态。更改此线程后,可以立即执行。

  JDK18描述如下所示:

  在大多数毫无疑问的情况下等待该线程死亡。一个暂停,要永远等待。

  该实现使用呼叫的循环。当线程终止时,该方法被调用。建议不使用应用程序或在实例上使用应用程序。

  调用线程A中线程B的JOIN()方法,然后在线程结束后,线程A将继续执行B。从源代码实现和JDK文档描述,我们可以看到它基于方法。

  原始:https://juejin.cn/post/7099483629847969806