Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Tầm quan trọng của phương thức Thread.onSpinWait() trong Java 9


Phương thức Thread.onSpinWait() được giới thiệu trong Java 9. Đây là phương thức static của lớp Thread và có thể được gọi tùy chọn trong các vòng lặp busy-waiting. Nó cho phép JVM phát ra hướng dẫn xử lý器 (processor instructions) trên một số kiến trúc hệ thống để cải thiện thời gian phản ứng trong các vòng lặp spin-wait như vậy, và cũng giảm năng lượng tiêu thụ bởi luồng core. Nó có lợi cho tổng tiêu thụ năng lượng của chương trình Java và cho phép các luồng core khác thực thi nhanh hơn trong cùng gói tiêu thụ năng lượng.

Cú pháp

public static void onSpinWait()

Ví dụ

public class ThreadOnSpinWaitTest {
public static void main(final String args[]) throws InterruptedException {
final NormalTask task1 = new NormalTask();
final SpinWaitTask task2 = new SpinWaitTask();
final Thread thread1 = new Thread(task1);
thread1.start();
final Thread thread2 = new Thread(task2);
thread2.start();
new Thread(() -> {
try {
Thread.sleep(1000);
} catch (final InterruptedException e) {
e.printStackTrace();
} finally {
task1.start();
task2.start();
}
}).start();
thread1.join();
thread2.join();
}
private abstract static class Task implements Runnable {
volatile boolean canStart;
void start() {
this.canStart = true;
}
}
private static class NormalTask extends Task {
@Override
public void run() {
while (!this.canStart) {
}
System.out.println("Done!");
}
}
private static class SpinWaitTask extends Task {
@Override
public void run() {
while (!this.canStart) {
Thread.onSpinWait();
}
System.out.println("Done!");
}
}
}

Kết quả

Done!
Done!