2017-03-02 51 views
1

我正在研究線程優先級,我有Windows 10和Ubuntu 16.0 lts操作系統。基於Prority的線程?

而且我知道windows並沒有提供基於優先級的處理,所以我看不到基於優先級的線程程序的使用,以至於它如何工作。

因此,我在ubuntu上運行基於優先級的程序,因爲有人告訴我ubuntu提供基於優先級的進程。

但當我運行我的程序時,它顯示相同的輸出或混合輸出作爲窗口。

那麼有什麼辦法可以在Ubuntu中啓用優先級,我們可以在Windows中啓用優先級,但爲此我應該有我沒有的真正的Windows。

class MyThread extends Threads { 
    public void run() { 
    for(int i=0;i<20;i++) 
     System.out.println(Thread.currentThread().getName()+""+i); 
    } 
    } 

class TestThread { 
    public static void main(String[] arg){ 
    Thread.currentThread().setPriority(1); 
    MyThread t1=new MyThread(); 
    t1.setPriority(10); 
    t1.start(); 
    for(int i=0;i<20;i++) 
    system.out.println(Thread.currentThread().getName()+""+i); 
} 
} 
+0

你想通過優先化某些線程來實現什麼?如果你想讓代碼順序執行,你可能會重新考慮你的程序的設計。另外,提供某些硬件規格(如處理內核的數量)可能對那些回答問題的人有所幫助。 –

+0

還有一件事:您要求我們花時間幫助您。所以你請花費盡職調查,並把A)正確格式化/ indeted代碼編譯(你不會)B)它被稱爲Ubuntu;不是Ubantu。 C)另一件事不太好......提出問題;然後轉身離開。 – GhostCat

+0

最後,僅僅因爲我自己好奇......我只花了整整一個小時**來編寫一個能夠顯示Linux上不同優先級的效果的例子。你猜怎麼了。我失敗了。也許我明天會繼續,但這裏真正的意義在於:正如我告訴你的那樣;事情比你想象的要難得多;-) – GhostCat

回答

2

在Java中,線程的優先級更多的推薦對JVM的。

換句話說:每個JVM實現自己決定如何使用這個概念。所以它不僅僅關於Windows和Linux;還有關於Oracle JVM與OpenJDK或IBM JVM的關係;並且還可能涉及一個JVM的版本A和一些更新的版本B.

除此之外:請放心,這樣的(對不起)天真,這意味着過於簡單的示例代碼而不是可以幫助您確定您的JVM是否支持優先級。

重點是:雖然在重負載下系統是而不是;並且沒有資源短缺......有可能是即使是低優先級的線程也能夠以相同的速度在高優先級的線程上吐出println語句。

如果你真的好奇探索這樣的事情,你將不得不提出一個更復雜的例子;你的線程在哪裏做一些真正的工作;然後嘗試向系統中添加「加載」 - 然後觀察高優先級線程是否可以比低優先級線程取得更多進展!

相關問題