java虚拟机——java与线程

java与线程

线程的实现

1、使用内核线程实现
内核线程(KLT),由内核来完成线程切换。
程序一般是使用内核线程的一种高级接口——轻量级进程。每个轻量级进程都由一个内核线程支持。
轻量级进程的优点:每个轻量级进程都是一个独立的单元,即使有一个轻量级进程在系统调用中阻塞了,也不会影响整个进程的工作。
轻量级进程的缺点:基于内核实现的,所以各种线程操作都需要进行系统调用。系统调用的代价相对较高,需要在用户态和内核态之间来回切换。轻量级进程需要消耗一定的内核资源,因此一个系统支持轻量级进程的数量是有限的。

2、使用用户线程来实现
完全建立在用户空间的线程库上,系统内核不能感知线程存在的实现。用户线程的简历、同步、销毁和调度完全在用户态中完成,不需要内核的帮助,不需要切换到内核态。
缺点:没有系统内核的支援,所有的线程操作都需要用户程序自己处理。现成的创建、切换、调度都是需要考虑的问题。

3、使用用户线程加轻量级进程混合实现
用户线程还是完全建立在用户空间,因此用户线程的创建、切换、析构等操作依然廉价,并且可以支持大规模的用户线程并发。用户线程的系统调用通过轻量级线程来完成,使用内核提供的线程调度功能及处理器映射,大大降低了整个进程被完全阻塞的风险。

java线程调度

线程调度是指系统为线程分配处理器使用权的过程。

1、协同式调度
线程的执行时间由县城本身来控制,线程把自己的工作执行完了之后,要主动通知系统切换到另外一个线程上。
缺点:线程执行时间不可控制,程序可能会一直阻塞在那里。

2、抢占式调度
每个线程将由系统来分配执行时间。
不会有一个线程导致整个进程阻塞的问题。
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、付费专栏及课程。

余额充值