Computer >> 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?


Thread.onSpinWait () phương thức đã được giới thiệu trong Java 9. Nó là một static phương pháp của Chủ đề lớp học và có thể được gọi tùy ý trong bận-đợi các vòng lặp. Nó cho phép JVM đưa ra hướng dẫn bộ xử lý trên một số kiến ​​trúc hệ thống để cải thiện thời gian phản ứng trong spin-wait như vậy vòng lặp, và cũng giảm điện năng tiêu thụ bởi luồng lõi. Nó có thể mang lại lợi ích cho mức tiêu thụ điện năng tổng thể của một chương trình java và cho phép các luồng lõi khác thực thi với tốc độ nhanh hơn trong cùng một đường bao tiêu thụ điện nă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.sta*rt();
         }
      }).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!");
      }
   }
}

Đầu ra

Done!
Done!