栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA多线程的相关状态调用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA多线程的相关状态调用

一、JAVA多线程的实现

多线程的实现主要以下三种模式:

1.内核线程实现

内核线程是指直接由操作系统内核支持的线程,这种线程由内核完成线程切换,内核通过操作调度器对线程进行调度,并负责将线程的任务映射到各个处理器上。

程序一般不会直接使用内核线程吗,而是使用内核线程的一种高级接口,即轻量级线程,将轻量级线程与内核线程直接按照1:1的关系进行创建。具体的原理如图所示

 

在这种模型下,每个轻量级进程都成为一个独立的调度单元,即使其中一个轻量级进程阻塞了,也不会影响整个进程仅需工作,但创建轻量级进程的过程需要进行系统调用,即需要进行用户态和内核太的切换。每个轻量级进程都需要一个内核线程的支持,因此系统支持的轻量级进程的数量是有限的。

2.用户线程实现

用户线程完全建立在用户的线程库上,创建和销毁的过程中无需系统内核的参与,因此操作消耗的系统资源较少且效率较高,也能够支持规模更大的线程数量。

 

用户此案城的优点虽然很突出,但是缺点也很明显。比如阻塞处理等问题实现起来会非常困难,导致程序的代码实现起来非常复杂,除了有明确需求外,现在的操作系统已经不再使用它了。

3.混合实现

混合实现即为将内核线程实现和用户线程实现相结合的方式,在这种模式下,既存在用户线程,也存在着轻量级进行。用户线程还是完全创建在用户空间中,因此线程创建,销毁,切换等操作依然是廉价的,并且支持大规模用户线程并发,而操作系统支持的轻量级进程作为用户线程和内核线程切换的桥梁,这样可以使用内核提供的线程调度处理功能以及处理器映射,并且用户线程的系统调度要通过轻量级进程来完成,大大降低整个进程被完全阻塞的风险。

 

二、线程的状态

1.新建态(new):创建后尚未启动的线程。

2.就绪态(start):调用start后的线程,等待操作系统为其分配处理器执行时间

3.运行态(runnable):此时正在执行相关操作的线程

4.等待态(waited):处于这种状态的线程不会被分配处理器执行时间,它们要等到被其他线程唤醒。对应wait()或park()操作。

5.超时等待态(timed waited):处于这种状态的线程不会被分配处理器执行时间,它们要等到timeout设置的时间结束才会被唤醒。

6.阻塞(blocked):阻塞状态等待着获取一个排他锁,这个事件将在另外一个线程放弃这个锁的时候发生。

7.结束(terminated):已终止线程的状态,线程已经结束执行。

不同状态之间的关系可参考这幅图

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/276312.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号