Skip to content

Executor

Daemon

sleep方法

  • sleep方法是Thread类的一个静态方法,调用该方法可以使当前线程休眠指定的时间,单位是毫秒。
  • sleep方法会抛出InterruptedException异常,因此在调用sleep方法时需要捕获该异常或者将该异常向外抛出。
  • sleep方法的调用会使当前线程从运行状态(Running)进入阻塞状态(Blocked)。
  • sleep方法不会释放锁,因此在调用sleep方法时,当前线程持有的锁不会被释放。
  • sleep方法的使用示例如下:
java
public class SleepDemo {
    public static void main(String[] args) {
        System.out.println("Hello from main thread!");
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("Hello again from main thread!");
    }
}

yield方法

  • yield方法是Thread类的一个静态方法,调用该方法可以使当前线程让出CPU,让其他线程有机会执行。
  • yield方法不会抛出异常。
  • yield方法不会释放锁,因此在调用yield方法时,当前线程持有的锁不会被释放。
  • yield方法的调用会使当前线程从运行状态(Running)进入就绪状态(Runnable)。
  • yield方法的使用示例如下:
java
public class YieldDemo {
    public static void main(String[] args) {
        Thread thread1 = new Thread(() -> {
            for (int i = 0; i < 10; i++) {
                System.out.println("Hello from thread1!");
                Thread.yield();
            }
        });
        Thread thread2 = new Thread(() -> {
            for (int i = 0; i < 10; i++) {
                System.out.println("Hello from thread2!");
                Thread.yield();
            }
        });
        thread1.start();
        thread2.start();
    }
}

sleep和yield的使用场景

  • sleep方法可以用来模拟一个耗时的操作,例如网络请求、文件读写等。
  • yield方法可以用来让出CPU,让其他线程有机会执行。

sleep和yield的区别

  • sleep方法会使当前线程休眠指定的时间,单位是毫秒,而yield方法会使当前线程让出CPU,让其他线程有机会执行。
  • sleep方法会抛出InterruptedException异常,而yield方法不会抛出异常。
  • sleep方法的调用会使当前线程进入阻塞状态,而yield方法的调用会使当前线程进入就绪状态。