কম্পিউটার টিউটোরিয়াল

জাভা ৯-এ Thread.onSpinWait() মেথডের গুরুত্ব


Thread.onSpinWait() মেথড জাভা ৯-এ পরিচয় করানো হয়েছে। এটি Thread ক্লাসের একটি স্ট্যাটিক মেথড এবং বিজি-ওয়েইটিং (busy-waiting) লুপে অপশনালি কল করা যায়। এটি JVM কে কিছু সিস্টেম আর্কিটেকচারে প্রসেসর ইনস্ট্রাকশন ইস্যু করতে দেয় যাতে astfelের স্পিন-ওয়েইট (spin-wait) লুপে রিয়াকশন টাইম উন্নত হয়, এবং কোর থ্রেড দ্বারা খরচ হওয়া পাওয়ারও কমায়। এটি একটি জাভা প্রোগ্রামের সামগ্রিক পাওয়ার কনসাম্পশন উপকারী হয় এবং একই পাওয়ার কনসাম্পশন এনভেলপে অন্যান্য কোর থ্রেড দ্রুত এক্সিকিউট হতে দেয়।

সিনট্যাক্স

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.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!");
        }
    }
}

আউটপুট

Done! 
Done!

  1. জাভা কনকারেন্সি - join() মেথড

  2. জাভা কনকারেন্সি - sleep() মেথড

  3. জাভা কনকারেন্সি - yield() মেথড

  4. জাভা ৯-এ destroyForcibly() মেথডের গুরুত্ব