您的位置:首页 > 编程语言 > Java开发

Java与线程

2018-03-01 16:52 40 查看

线程实现

内核线程

内核线程由操作系统调度需要进入内核态,程序一般不直接使用内核线程而是使用内核线程的高级接口——轻量级进程,也就是通常意义上说的线程,内核线程系统调度频繁,资源消耗较大。为1对1模型

用户线程

用户线程由进程独立调度,操作系统无法感知,实现比较复杂,但是资源消耗少。1对多模型

用户线程加轻量级进程混合实现

一个轻量级进程可以映射多个用户线程,集合内核线程和用户线程两者的优点,是m对n模型

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)已经终止的线程状态
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 线程 操作系统