Java线程调度

本文详细介绍了线程调度的基础概念,包括线程休眠、线程合并、线程礼让及线程中断等核心操作,并提供了具体的实现方法和实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线程调度

  • 等待和唤醒
    在这里插入图片描述

在这里插入图片描述

  • 线程休眠

    • 休眠是指让当前线程暂停执行一段时间,从运行状态进入阻塞状态,将 CPU 资源让给其他线程的一种调度方式。
    • 通过sleep() 来实现,使用时需要指定当前线程休眠的时间,单位为毫秒(1秒= 1000毫秒)

    实例

  • 线程合并

    合并是指将指定的某个线程合并到当前线程中,将原本两个交替执行的线程改为顺序执行,即一个线程执行完毕之后再来执行第二个线程,通过调用线程的 join 方法来实现合并。

    具体如何来实现合并?谁为主谁为从?假设有两个线程:线程甲,线程⼄:

线程甲在执⾏到某个时间点的时候调⽤了线程⼄的join⽅法,则表示从当前时间点开始CPU资源被线程⼄独占,线程甲进⾏阻塞状态,直到线程⼄执⾏完毕,线程甲重新进⼊就绪状态,等待获取CPU资源进⼊运⾏状态继续执⾏。

实例

同样是完成线程合并的操作, join()join(long millis) 是有区别的,
join() 表示被调⽤线程执⾏完成之后才能释放CPU资源,让其他线程来执⾏,
join(long millis) 则表示被调⽤的线程执⾏millis毫秒之后,⽆论其是否执⾏完毕,其他线程都可以和它来争夺CPU资源。


  • 线程礼让

    在某一个时间节点,线程暂停争夺CPU资源,进入阻塞状态,但只是暂时的一瞬间,过后线程对象再次进入就绪状态来争夺CPU资源,yield 实现线程礼让。

    实例

  • 线程礼让是指在某个特定的时间点,让当前线程暂停抢占CPU资源的⾏为,即从运⾏状态或就绪状态来到阻塞状态,从⽽将CPU资源让给其他线程来使⽤。
  • 假如有线程甲和线程⼄在交替执⾏,某个时间点线程甲作出了礼让,所以在这个时间点线程⼄就拥有了CPU资源,执⾏其业务逻辑,但不是说线程甲会⼀直暂停争夺,线程甲只是在特定的时间节点进⾏礼让,⼀旦过了这个时间节点,线程甲在此进 ⼊就绪状态,和线程⼄来争夺CPU资源。

  • 线程中断

    1、线程执行完毕之后自动停止。

    2、线程在执行过程中出现错误停止。

    3、线程在执行过程中手动停止。

    • public void stop()
    • public void interrupt()
    • public boolean isInterrupt()

实例

■ stop()⽅法在新版本的JDK已经不推荐使⽤了,
■ interrupt是⼀个实例⽅法,当⼀个线程对象调⽤该⽅法时,表示中断当前线程对象。
■ 每⼀个线程都有⼀个标志位来标识当前线程对象是否为中断状态
■ isInterrupt()⽅法就是⽤来获取当前线程对象的标志位的, true表示清除了标志位,当前线程对象已经中断, false表示没有清除标志位,当前线程对象没有中断。

在这里插入图片描述


返回多线程目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值