java内存模型与线程(下)

java与线程-------------线程的实现
线程的引入,可以把一个进程的资源分配和执行调度分开乘两部分来完成,各个线程可以共享进程的资源,也可以独立的调度。
1 进程:资源分配的基本单位。进程可以创建多个线程,最少一个主线程。进程需要自己独立的数据段和代码段
2 线程:执行调度的进本单位。一个线程只能属于一个进程,多个线程一起共享线程的资源。每个进程只要维护自己的栈和寄存器。
java与线程-------------线程的实现---------------使用内核线程实现
1 支持多线程的操作系统内核:支持多个线程的内核
2 内核线程:由内核负责内核线程的切换,通过调度器完成对线程的调度(系统内核: 内核线程 = 1:1)
3 轻量级进程:内核线程的接口,传统意义上的线程。
( 内核线程:轻量级进程 = 1:1)
3.1 轻量级进程由于是基于内核线程实现的,每个轻量级线程都是独立的调度单位,某个轻量级线程阻塞,不会对其他产生影响
3.2 轻量级进程由于是基于内核线程实现的,会消耗一定的内存资源,因此一个内核支持的轻量级线程数量有限
3.3 轻量级进程由于是基于内核线程实现的,各种线程操作依赖于系统调用,因此系统调用代价较高,需要在用户态和内核态之间切换
java与线程-------------线程的实现---------------使用用户线程实现
1 用户线程是指那些完全建立在用户空间上,不为系统内核感知的线程。(进程:用户线程= 1:N)
2 用户线程的实现不需要系统内核,遇到阻塞、多处理器时很麻烦
java与线程-------------线程的实现---------------使用混合实现
1 用户线程还是完全建立在用户空间中,因此用户线程的创建、切换、祈构等操作由用户自己实现,并且可以支持大规模的用户线程并发。而操作系统提供支持轻量级进程作为用户线程和内核线程之间的桥梁,使用内核来提供线程调度和处理器映射,并且用户线程的调用由轻量级进程实现,降低了进程被阻塞的风险
(进程:线程 = M:N)
内核-------内核进程---------轻量级线程--------用户线程
java与线程-------------线程的实现---------------java线程的实现
JVM没有规定需要使用那种线程模型
java与线程-------------java线程的调度
1 线程调度是指:系统为线程分配处理器的使用权的过程。
2 线程调度分类:协同式线程调度 和抢占式线程调度
2.1 协同式线程调度:由线程来告诉系统,可以切换到下一个线程中去来
对线程本身而言,切换操作是可知的。这样存在的坏处是:线程的执行时间不可控制,当一个线程崩坏了,会导致整个程序的阻塞
2.2 抢占式线程调度:由系统自己决定每个线程执行时间
由系统来控制每个线程的执行时间。java使用的线程调度就是抢占式线程调度。
java与线程-------------状态切换
一个线程可能有5种状态,但是某一个时间点内,一个线程只能有一个状态
1 新建: 创建后尚未启动的线程
2 运行:线程正在运行或者等待CPU分配执行时间
3 无限期等待:该线程没有CPU为他分配执行时间,只有等带其他线程显示的唤醒
4 限期等待:该线程没有CPU为他分配执行时间,过一段时间以后,系统会自动唤醒。
5 阻塞:在等待着获取一个排它锁,这个事件将会在另一个线程是释放这个锁的时候发生。在程序等待进入同步区域的时候,线程可能会进入这个状态
6 结束:线程的终止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值