Appearance
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方法的调用会使当前线程进入就绪状态。