Thread.onSpinWait() विधि जावा 9 में पेश की गई है। यह एक स्थिर . है थ्रेड . की विधि कक्षा और वैकल्पिक रूप से व्यस्त-प्रतीक्षा . में बुलाया जा सकता है लूप। यह JVM को ऐसे स्पिन-वेट में प्रतिक्रिया समय में सुधार करने के लिए कुछ सिस्टम आर्किटेक्चर पर प्रोसेसर निर्देश जारी करने की अनुमति देता है। लूप, और कोर थ्रेड द्वारा खपत की गई शक्ति को भी कम करते हैं। यह एक जावा प्रोग्राम की समग्र बिजली खपत को लाभ पहुंचा सकता है और अन्य कोर थ्रेड्स को उसी बिजली खपत लिफाफे के भीतर तेज गति से निष्पादित करने की अनुमति देता है।
सिंटैक्स
public static void onSpinWait()
उदाहरण
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!"); } } }
आउटपुट
Done! Done!