【并发】并发的基础概念(五)

在 Java 中,线程调度是指 Java 虚拟机 (JVM) 根据特定算法来分配 CPU 时间给各个线程的过程。常用的线程调度方法有以下几种:

  1. yield() 方法:

    • 作用:让出当前线程的执行权,给其他同优先级的线程执行机会。
    • 使用场景:当一个线程在执行过程中希望让其他同优先级的线程有机会执行时使用。
    • 代码示例:
      Thread.yield();
      
  2. sleep(long millis) 方法:

    • 作用:使当前线程休眠指定的毫秒数,在此期间不会占用 CPU 资源。
    • 使用场景:当需要让线程暂停执行一段时间时使用。
    • 代码示例:
      try {
          Thread.sleep(1000); // 休眠1秒
      } catch (InterruptedException e) {
          e.printStackTrace();
      }
      
  3. join() 方法:

    • 作用:等待调用 join 方法的线程执行完毕再继续执行当前线程。
    • 使用场景:当一个线程需要等待另一个线程执行完毕再继续时使用。
    • 代码示例:
      Thread t = new Thread(() -> {
          // 线程 t 的任务
      });
      t.start();
      try {
          t.join(); // 等待 t 线程执行完毕
      } catch (InterruptedException e) {
          e.printStackTrace();
      }
      
  4. wait() 方法 和 notify()/notifyAll() 方法:

    • 作用:用于线程间的通信与协作。wait() 使当前线程等待,直到其他线程调用 notify()notifyAll()
    • 使用场景:当线程需要等待某个条件满足后再继续执行时使用。
    • 代码示例:
      synchronized (lock) {
          while (conditionNotMet) {
              lock.wait(); // 当前线程等待
          }
          // 条件满足后继续执行
      }
      
      // 在其他线程中
      synchronized (lock) {
          lock.notify(); // 唤醒等待的线程
      }
      
  5. LockCondition 接口的方法:

    • 作用:提供更灵活的线程间同步与调度控制,特别是与 ReentrantLock 一起使用。
    • 使用场景:需要更复杂的线程同步机制时使用。
    • 代码示例:
      Lock lock = new ReentrantLock();
      Condition condition = lock.newCondition();
      
      lock.lock();
      try {
          while (conditionNotMet) {
              condition.await(); // 当前线程等待
          }
          // 条件满足后继续执行
      } finally {
          lock.unlock();
      }
      
      // 在其他线程中
      lock.lock();
      try {
          condition.signal(); // 唤醒等待的线程
      } finally {
          lock.unlock();
      }
      

这些方法在实际开发中经常结合使用,以实现复杂的线程调度和同步机制。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值