JAVA与线程

实现线程得三种方式:
1.使用内核线程
内核线程(Kernel_Level Thread KLT)就是直接由操作系统内核支持得线程,这种线程由操作系统内核来完成线程切换,内核通过操纵调度器scheduler对线程进行调度,并负责将线程得任务映射到 各个处理器上。每个内核线程可以视为内核得一个分身。
程序一般不会直接去使用内核线程,而是去使用内核线程得一种高级接口-------轻量级进程 (Light Weight Process,LWP),轻量级进程就是我们通常意义得线程。
在这里插入图片描述
轻量级进程与内核线程之间得1:1得关系,被称为一对一得线程模型

2.使用用户线程实现
从广义上来讲,一个线程只要不是内核线程,就可以认为是用户线程,因此,从这个定义上来讲,轻量级进程也属于用户线程,但轻量级进程得实现始终是建立在内核上的,许多操作都要进行系统调用,效率会受到限制。
从狭义上来讲用户线程指的是完全建立在用户空间的线程库上,系统内核不能感知线程存在的实现。用户线程的建立,同步,销毁和调度完全在用户态中完成,不需要内核的帮助。
优点:不需要系统内核支援,操作是非常快速而且低消耗的,也可以支持规模更大的线程数量
缺点:在于没有系统内核的支援,所有的线程操作都需要用户程序自己处理,遇到阻塞如何处理等问题解决起来将会异常困难。
在这里插入图片描述

3.使用用户线程加轻量级进程混合实现
用户线程还是处于用户空间下,用户线程的创建,切换,析构等操作依然廉价,并且可以支持大规模的用户线程并发。而操作系统提供支持轻量级进程则作为用户线程和内核线程之间的桥梁。Unix系统就是运用的这种线程模型。在这里插入图片描述
SUN 的JDK WINDOWS版与LINUX版都是使用一对一的线程模型实现的,一条JAVA线程就映射到一条轻量级进程之中,因为WINDOS和LINUX系统提供的线程模型都是一对一的。
JAVA的线程调度
1.协同式调度
线程的执行时间由线程本身来控制,线程把自己的工作执行完了之后,要主动通知系统切换到另一个线程上。
优点:实现简单。
缺点;线程执行时间不可控制。
2.抢占式调度
每个线程由系统来分配执行时间,线程的切换不由线程本身来决定(Thread.yield()可以让出时间,但要获取时间的话,线程本身是没什么方法的)我们可以设置线程的优先级来完成。优先级高的越先被执行。
JAVA线程状态图
在这里插入图片描述
Runable包括了操作系统线程状态中的Running和Ready,也就是线程处于执行状态或者等待CPU为它分配时间。
Waiting 无限期等待 处于这种状态的线程不会被分配CPU执行时间,他们要等待被其他线程显式的唤醒。
TimedWaiting 限期等待 处于这种状态的线程也不会被分配CPU执行时间,不过无须等待被其他线程显式的唤醒,在一定时间后会让线程进入限期等待状态。
Wait和Sleep的区别

Blocked 线程被阻塞了 阻塞状态与等待状态的区别是 阻塞状态在等待着获取一个排他锁,这个事件将在另外一个线程放弃这个锁的时候结束。而等待状态则是在等待一段时间,或者唤醒动作的发生生。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值