线程的生命周期_Java线程的实现方式及生命周期原理简述

  前言

  在我们的工作中,我们可以在许多情况下使用程线技术,当我们采访时,程线技术基本上是必须的。今天,我将从程线的实施和程线的生命周期进行全面的解释和分析,帮助大家更好的去解线和程科技。

  概念

  让我们首先了解离线程和程:之间的概念和区别

  1.什么正在进入程

  进入程是由计算机执行程序列的应用。当你运行一个程序列时,你也完成了一个到程的启动(比如启动微信)。如图所示

e135f7001e26d6db2d4d00977cbfc1e2.png

  2.什么是程线

  程线是在程,独立运营的一条线路,而在程,它可以由一条或多条程,线组成,但一条程线只能对应一条进入程的线路

  如何打造程线

  有三种方法可以创建继承线程类的程:线,实现可运行接口,或者通过可调用和未来创建程线。具体的程创建如下:

  1.继承线程类

  让我们看看通过代码继承Thread类来创建行程的具体步骤:

  首先,我们需要定义一个类来集成线程类。继承之后,我们需要重写线程类的run()方法。代码如下:

0523abed66cf1b68b086b085e82a07ea.png

  然后我们调用行程类对象的start()方法来启动行程,代码如下:

4b64b1c4b44dcd6c0f634beceef9dec6.png

  运行结果如下:

2fb044866288494a22a5afaf3cab7df3.png

  2.实现可运行接口

  我们还可以通过实现Runnable接口来创建一个行程类,如下所示:

c85e8d5d8e9b3360fe079490b9e19d34.png

  首先,我们需要创建一个类来实现Runnable接口。同样,我们需要重写run()方法

  然后我们创建一个Runnable实现类的对象,并使用这个实现类的对象作为线程类的目标对象来创建一个行程。最后,线程类的对象是真正的行程对象。运行start()方法以开始程线

ff3588cb7e5f6f9aa4848934540df0ad.png

  结果如下:

008d6b95fd542afeaff3442d5e13bd16.png

  3.创建通过可呼叫和未来的程线路

  首先创建一个类来实现可调用接口并重写call()方法

dcfe76ecf75026607dae7d47cc6e9b73.png

  然后使用FutureTask包装我的可调用对象。类似地,使用FutureTask类对象作为线程类的目标对象来创建一个程线,并从start()方法开始。

42810c5f4b4d8dd5135d606fbb0bf1cd.png

  通过上面的例子,我们发现我们重写了call()方法而不是run()方法,并且还可以自定义返回值。另一个值得注意的问题是FutureTask实际上实现了Runnable类并继承了Future接口。显然,未来任务具有两者的双重特征。程线的生命周期

  程线的生命周期包括五种状态:新状态、就绪状态、运行状态、阻塞状态和破坏状态。

  1.新状态

  我们使用new()方法使它有自己的内存空间,所以new是程线的新状态

  2.就绪状态

  从上面的例子可以看出,当我们调用start()方法时,我们进入了就绪状态。请注意,此时程不会立即执行该行,而是等待CPU为其分配资源,并在获得CPU资源后开始执行。这是面试官经常问的一个问题。

  3.操作状态

  当线程在获得CPU资源后进入运行状态。在这里,我将集中讨论程,正在运行的州线,在那里,采访者经常大惊小怪。

  因为程的跑步路线非常复杂,它可能会变得准备好,受阻或死亡。

  当run()方法被执行时,如果线路程在运行的程中失去了CPU资源(例如调用yield()方法),线路程将暂停运行,因为线路程已经从运行状态改变为就绪状态。

  如何将程线从运行状态更改为就绪状态?

  当运行线路程调用睡眠方法时,它将主动放弃被占用的系统资源

  当运行的线路程调用阻塞的IO方法时,如果它一直在等待该方法返回值,它将导致线路程被阻塞。

  调用yield()方法会暂停当前正在运行的程线

  程线正在等待通知

  程线的暂停方法被称为暂停程线

  当然,除了在运行状态下将线路程改变为就绪状态外,它还可以直接将运行状态下的线路程改变为毁坏状态,例如,在线路程有一个异常或者调用了stop(),desyory()等方法。

  4.阻塞状态

  如果执行sleep()方法,则线路程将进入阻塞状态。当然,这不仅仅是因为调用了睡眠方法,例如,线路程在等待输入/输出设备时将进入阻塞状态。

  5.销毁状态

  在程, 当线,行动结束或被迫终止时,程线进入了破坏状态。当然,在运行程,的过程中也存在上述异常情况,如JVM的异常结束、停止调用()等。所有这些都会使程线进入被摧毁的状态。请注意,程线在被摧毁的状态下无法恢复。如果强制调用start()方法,将引发一个异常。

  完整的程生命周期图如下:

0e9430d86122c9a77cebb8948e4d522f.png

 卸载最后

  希望通过本文能带大家更好的去了解线程技术、线程与进程的区别、线程的三个实现方法和他们的区别以及线程的生命周期,帮助大家在工作中能更好的去开发程序。

欢迎关注我们!

部分文字与图片来源于网络,如有版权请联系删除!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值