java線程的調度
⑴ java的多線程是OS調度還是JVM調度的呢
現在java線程和操作系統線程之間的對應關系有三種:
多對一、一對一、多對多
多對一就是所說的「Green thread」,一個java應用程序
被當作一個任務被操作系統調度,而這個java應用程序里
的多個線程則由虛擬機調度執行。也可以說由虛擬機選出
一個多線程java程序里的一個線程作為活動線程,這個線
程再作為操作系統的一個任務被操作系統調度。
一對一就是一個java線程對應一個操作系統線程了,即同
一個多線程java程序里的所有線程都由操作系統統一調度。
多對多還不是很明白。。。
⑵ java線程調度問題
給你一段代碼:
在當前分鍾為1時,執行線程,不等於1是中斷線程。
import java.util.Calendar;
public class AAAAAAAA extends Thread {
public void run(){
Thread b = new B();
while( true ){
try {
Calendar cal = Calendar.getInstance();
int 分鍾=cal.get( Calendar.MINUTE );
if( 分鍾==1 ){
b.start();
}else{
b.interrupt();
}
Thread.sleep( 100 );
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
class B extends Thread{
public void run(){
System.out.println( "B 正在運行" );
}
public void interrupt(){
System.out.println( "B 被中斷了" );
}
}
希望對你有幫助。
⑶ JAVA搶占式線程調度的問題
1線程的調度並不是由java決定的,而是os,os可以保證所有線程都有機會得到執行。即時某個線程正在忙。也會被休眠。具體的你要看os相關的線程調度這一塊,這叫搶占式任務調度。
2即使線程t的優先順序高,在調用start時,也不會保證線程已經真實的啟動。os只是把他放到了線程隊列中去排隊。而當前線程繼續執行。
⑷ java線程調度的策略是什麼
時間片輪轉 加 優先順序
你可以這樣試
在一個線程里死循環輸出"1",
第二個輸出"2"
......
然後設置他們的優先順序,並且run.你可以看下屏幕上的輸出結果
屏幕跳得很快,但你應該能看清楚優先順序最高的那個數字...
⑸ 線程的調度分為幾種模型,在java中是使用哪種調度模型
Java程序屬於搶占式調度,哪個線程的優先順序高,哪個線程搶到的CPU時間片的概率就高;如果兩個線程同一個優先順序,則CPU隨機選擇一個執行。
⑹ java 線程的調度是指創建了沒運行嗎
不是。是指如何安排線程的執行。
⑺ java線程調度
就緒狀態是只要CPU有空閑隨時都可以執行,處於就緒狀態;
而阻塞狀態是需要外界激活,可能是時間、可能是滿足某一條件,他才能激活運行,就算CPU有空閑,也需要滿足條件才會執行。
⑻ java幾種線程調度
時間片輪轉 加 優先順序
你可以這樣試
在一個線程里死循環輸出"1",
第二個輸出"2"
......
然後設置他們的優先順序,並且run.你可以看下屏幕上的輸出結果
屏幕跳得很快,但你應該能看清楚優先順序最高的那個數字...
⑼ Java中線程調度遵循何種原則
同時進入看優先順序誰高,相同優先順序看操作系統如何調(有多種演算法,系統先調誰不知道)
不同時進入需等前面線程阻塞或等待是進入運行狀態
⑽ Java中多線程調度如何實現
多線程有兩種實現方法,分別是繼承Thread類與實現Runnable介面
同步的實現方面有兩種,分別是synchronized,wait與notify