Java線程調劑之線程休眠用法剖析。本站提示廣大學習愛好者:(Java線程調劑之線程休眠用法剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是Java線程調劑之線程休眠用法剖析正文
本文實例剖析了Java線程調劑之線程休眠用法。分享給年夜家供年夜家參考。詳細剖析以下:
Java線程調劑是Java多線程的焦點,只要優越的調劑,能力充足施展體系的機能,進步法式的履行效力。
這裡要明白的一點,不論法式員怎樣編寫調劑,只能最年夜限制的影響線程履行的順序,而不克不及做到精准掌握。
線程休眠的目標是使線程讓出CPU的最簡略的做法之一,線程休眠時刻,會將CPU資本交給其他線程,以便能輪換履行,當休眠必定時光後,線程會清醒,進入預備狀況期待履行。
線程休眠的辦法是Thread.sleep(long millis) 和Thread.sleep(long millis, int nanos) ,均為靜態辦法,那挪用sleep休眠的哪一個線程呢?簡略說,哪一個線程挪用sleep,就休眠哪一個線程。
/** * Java線程:線程的調劑-休眠 * * @author leizhimin 2009-11-4 9:02:40 */ public class Test { public static void main(String[] args) { Thread t1 = new MyThread1(); Thread t2 = new Thread(new MyRunnable()); t1.start(); t2.start(); } } class MyThread1 extends Thread { public void run() { for (int i = 0; i < 3; i++) { System.out.println("線程1第" + i + "次履行!"); try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } } } } class MyRunnable implements Runnable { public void run() { for (int i = 0; i < 3; i++) { System.out.println("線程2第" + i + "次履行!"); try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } } } }
運轉成果以下:
線程2第0次履行! 線程1第0次履行! 線程1第1次履行! 線程2第1次履行! 線程1第2次履行! 線程2第2次履行! Process finished with exit code 0
從下面的成果輸入可以看出,沒法精准包管線程履行順序。