Java线程调度

1.Java线程的实现
JDK1.2之前JDK1.2之后
用户线程的实现基于操作系统原生线程

所以,在JDK1.2之后操作系统支持怎样的线程模型决定了Java虚拟机的线程是怎样映射的。

2.Java线程调度

两种调度方式:

  • 协同式调度
  • 抢占试调度

2.1协同式调度

线程执行时间由线程本身控制,线程把自己的工作执行完了之后,要通知系统切换到另一个线程上。

优点缺点
实现简单,没有线程同步的问题线程执行时间不可控制,若线程发生阻塞,则程序会一直阻塞在那里

2.2抢占式调度

每个线程执行的时间由系统分配,线程的切换不由线程本身来决定

缺点优点
线程安全问题线程执行时间可控,不会因为一个线程导致整个进程阻塞

Java使用的是抢占式线程调度

3.线程优先级

Java语言一共设置了10个级别的线程优先级(Thread.MIN_PRIORITY-Thread.MAX_PRIORITY)在两个线程同时处于Ready状态时,优先级越高的线程越容易被系统选择执行。
但是优先级并不是太靠谱,因为Java线程是通过映射到操作系统的原生线程上来实现的,所以调度还是取决于操作系统,而操作系统的优先级可能不与Java线程优先级一一对应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值