🌺①抢占式调度
🌺②协作式调度
🌺③Thread.yield()方法
🌺④sleep()方法
①抢占式调度
public class PreemptiveThreadDemo extends Thread {
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + ": " + i);
}
}
public static void main(String[] args) {
PreemptiveThreadDemo t1 = new PreemptiveThreadDemo();
PreemptiveThreadDemo t2 = new PreemptiveThreadDemo();
t1.setPriority(Thread.MAX_PRIORITY);
t2.setPriority(Thread.MIN_PRIORITY);
t1.start();
t2.start();
}
}
在上述代码中,我们创建了两个线程t1和t2,并分别设置了它们的优先级。然后,我们通过调用start()方法开启它们的执行。由于t1的优先级比t2高,因此t1会优先执行。但是,由于Java中的线程调度是抢占式的,因此在某些情况下,t2也有可能在t1之前执行。