Java与线程

线程实现

  1. 内核线程
    内核线程由操作系统调度需要进入内核态,程序一般不直接使用内核线程而是使用内核线程的高级接口——轻量级进程,也就是通常意义上说的线程,内核线程系统调度频繁,资源消耗较大。为1对1模型
  2. 用户线程
    用户线程由进程独立调度,操作系统无法感知,实现比较复杂,但是资源消耗少。1对多模型
  3. 用户线程加轻量级进程混合实现
    一个轻量级进程可以映射多个用户线程,集合内核线程和用户线程两者的优点,是m对n模型
  4. Java线程实现
    不同JVM实现不同,Sun JDK使用的是一对一模型

Java线程调度

java使用主流的抢占式线程调度,可设置线程优先级,但是线程优先级在某些情况下并不可靠,例如Windows系统下,如果线程特别“勤奋”,则Windows会越过线程优先级来分配执行时间

状态转换

java线程有五种状态,任意时间点只有一个状态
- 新建(New)尚未启动的线程
- 运行(Runable)操作系统中的Running和Ready
- 无限期等待(Waiting)需要其他线程唤醒,没设置TimeOut的wait()和没设置TimeOut的Thread.join()等
- 限期等待(Timed Waiting)一定时间后被系统自动唤醒,如Thread.sleep(),设置了TimeOut的wait()和Thread.join()等
- 阻塞状态(Blocked)线程获取不到排他锁而处于的状态,如synchronized
- 结束状态(Terminated)已经终止的线程状态

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值