Java中的线程生命周期
线程在生命周期中经历多个阶段。例如,一个线程进入世界,启动,运行,然后消失。下图解释了线程的完整生命周期。
开始您的免费软件开发课程
网络开发、编程语言、软件测试及其他
- 线程构造函数通过新状态生成线程。
- 调用Thread中的begin方法可以使其进入可运行状态。
- 有关 Java 的线程调度程序在处理器收到该线程时运行该线程。
- 当线程进入阻塞状态时,它会再次运行,因为它回到了可运行状态。
- 如果wait方法被称为线程会进入等待状态,那么在整个Inform和notify all方法中变成通知后很快就会进入可运行状态。
- 一旦 run 方法终止,线程就会结束。
什么是线程?
线程是在操作系统级别定义的。 Java 语言以及所有其他语言都利用操作系统提供的服务。从开发人员的角度来看,线程是我们将编写应用程序并以某种方式执行的一组指令。应用程序本身可以由多个线程组成。不同的线程可以同时执行。 JVM(Java 虚拟机)使用多个线程。有用于垃圾收集的线程。有针对即时编译器的线程和其他技术线程。
Java 中线程生命周期的状态
下面是Java中线程生命周期的不同状态:
1。新:新线程在新状态下开始其生命周期。在程序开始线程之前,它会继续保持此状态。此外,它也称为创建的线程。
2。可运行:在最近生成的线程可以开始后,该线程将变为可运行。具有此状态的线程被认为正在执行其进程。
3。等待:有时,即使线程正在等待另一个线程执行活动,线程也会转换为等待状态。仅当附加线程指示等待线程继续执行时,线程才会转换为可运行状态。
4。定时等待:可运行线程可以轻松地进行特定的定时等待状态以获得特定的时间间隔。一旦该点间隔到期或者它真正等待的事件发生,具有此状态的线程就会转换返回到可运行状态。
5。终止:可运行线程进入终止状态,因为它完成了其任务,否则终止。
如何在 Java 中创建线程?
Java中创建线程最基本的方法是使用Runnable模式。首先,你需要创建一个Runnable接口的实例,这很简单;只有一种方法可以实现。然后我们将此实例传递给 Thread 类的构造函数。然后,我们只需调用创建的线程对象的 start() 方法来启动一个新线程,该线程将运行包装在 Runnable 对象中的任务。
首先,我们创建一个 Runnable 实例。 只有一种方法需要实现,称为 run() 方法。这是 Java 7 的模式,使用匿名类的实例来实现这一点。但是我们也可以使用 lambda 表达式来实现 Runnable,因为 Runnable 接口中只有一个方法。
让我们在非常简单的示例上创建线程。
我们将了解应同步的未同步代码的竞争条件会出现什么问题,并且我们将使用同步来修复我们的代码。第一个例子非常简单;这是非常基本的。这只是创建一个任务。
输出:
任务是 Runnable 接口的一个实例,我们称其为 Runnable,我们可以使用 lambda 表达式来实现该接口。该任务被交给一个新线程并在该线程的上下文中执行。因此,我们将打印出正在运行此任务的线程的名称。我正在运行... Thread.currentThread() 是 Thread 类的静态方法,它返回运行当前任务的线程。我们只需在该线程对象上调用 getName() 即可返回线程的名称,然后在创建 Thread 实例后 t = new Thread. 将此可运行程序作为参数传递。那么这个线程就要执行这段代码了。并启动它。 t.start() 这是我们需要调用的 start() 方法。我们还可以使用 t.setName(“My thread”) 给出该线程的显式名称。现在我们可以执行这段代码了。现在我们不再调用start()方法,而是调用run()方法,如果我们运行这段代码,问题是任务正确执行了,但它没有在我们创建的线程中执行。它是在主线程中执行的,也就是执行main方法的线程。因此,如果我们想启动一个新线程,则不应调用此 run() 方法。
输出:
Java中线程生命周期的方法
简单的Thread描述的方法如表所示。
Data Types | Thread Method Names |
String |
getName() Return this thread’s name |
int |
get priority()
Returns the thread’s priority |
boolean |
isAlive()
Tests if this thread is still running |
void |
join()
Waits for this thread to die (terminate) |
void |
run()
Whenever this thread was built utilizing an individual Runnable object, which usually Runnable object’s run method is called, this method will do nothing and returns. Whenever thread class can be extended and run() method is over-ridden during sub-class, then an over-ridden run() method is called. |
void |
setName(String name)
Alterations the name with this thread to become comparable to the argument name. |
static void
|
sleep(long millis) throws Interrupted/Exception It causes the presently performing thread to rest for the required quantity of milliseconds. |
static void |
sleep(long millis, int Nanos) throws InterruptedException
It causes the presently performing thread to sleep (cease execution) for the required quantity of milliseconds as well as the particular quantity of nanoseconds. |
void |
start()
Triggers these threads to start execution; the Java Virtual Machine calls the run method of that thread. |
static void |
yield()
Triggers the presently thread object to pause and permit additional threads to execute briefly. |
static Thread |
currentThread()
Returns a mention of the presently executing thread object. |
返回该话题的名称
它导致当前正在执行的线程休息
所需的毫秒数。
以上是Java中的线程生命周期的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Java 8引入了Stream API,提供了一种强大且表达力丰富的处理数据集合的方式。然而,使用Stream时,一个常见问题是:如何从forEach操作中中断或返回? 传统循环允许提前中断或返回,但Stream的forEach方法并不直接支持这种方式。本文将解释原因,并探讨在Stream处理系统中实现提前终止的替代方法。 延伸阅读: Java Stream API改进 理解Stream forEach forEach方法是一个终端操作,它对Stream中的每个元素执行一个操作。它的设计意图是处

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

胶囊是一种三维几何图形,由一个圆柱体和两端各一个半球体组成。胶囊的体积可以通过将圆柱体的体积和两端半球体的体积相加来计算。本教程将讨论如何使用不同的方法在Java中计算给定胶囊的体积。 胶囊体积公式 胶囊体积的公式如下: 胶囊体积 = 圆柱体体积 两个半球体体积 其中, r: 半球体的半径。 h: 圆柱体的高度(不包括半球体)。 例子 1 输入 半径 = 5 单位 高度 = 10 单位 输出 体积 = 1570.8 立方单位 解释 使用公式计算体积: 体积 = π × r2 × h (4

PHP和Python各有优势,适合不同场景。1.PHP适用于web开发,提供内置web服务器和丰富函数库。2.Python适合数据科学和机器学习,语法简洁且有强大标准库。选择时应根据项目需求决定。

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。
