线程的调度

Java虚拟机会按照特定的机制为程序中每个线程分配CPU的使用权,这种机制被称为线程的调度

线程的调度有两种模型:分时调度模型和抢占式调度模型。
分时调度模型是指让所有的线程轮流获得cpu的使用权,并且平均分配每个线程占用的CPU的时间片。
抢占式调度模型是指优先让可运行池中优先级高的线程占用CPU,如果可运行池中的线程优先级相同,那么就随机选择一个线程,使其占用CPU。

线程的优先级

0到10整数表示优先级。0最低,10最高。(UNIX刚好相反)。其中 public static final int MIN_PRIORITY = 1;
public static final int NORM_PRIORITY = 5;
public static final int MAX_PRIORITY = 10;

线程优先级可以用 setPriority(int newPriority)来改变。

线程的休眠

public static void sleep(longmillis) throws InterruptedException
public static void sleep(long millis,int nanos)throws InterruptedException
在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。该线程不丢失任何监视器的所属权。

线程的让步

public static void yield()
暂停当前正在执行的线程对象,并执行其他线程。

线程的插队

public final void join(long millis,int nanos)throws InterruptedException
等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒。 若没有参数或者参数为0,表明要一直等下去

线程的通信

public final void wait(long timeout,int nanos)throws InterruptedException
在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。

public final void notify()
唤醒此同步锁上等待的第一个调用wait()的线程

public final void notifyAll()
唤醒此同步锁上调用wait()的所有线程

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值