導航:首頁 > 編程語言 > JAVA中yield

JAVA中yield

發布時間:2024-02-27 20:17:31

『壹』 java中join( )和yield方法有什麼區別和聯系

yield:理論上,yield意味著放手,放棄,投降。一個調用yield()方法的線程告訴虛擬機它樂意讓其他線程佔用自己的位置。這表明該線程沒有在做一些緊急的事情。注意,這僅是一個暗示,並不能保證不會產生任何影響。注意:它是一個靜態的原生(native)方法;它告訴當前正在執行的線程把運行機會交給線程池中擁有相同優先順序的線程;

它不能保證使得當前正在運行的線程迅速轉換到可運行的狀態;它僅能使一個線程從運行狀態轉到可運行狀態,而不是等待或阻塞狀態。

join:線程實例的方法join()方法可以使得一個線程在另一個線程結束後再執行。如果join()方法在一個線程實例上調用,當前運行著的線程將阻塞直到這個線程實例完成了執行。

packagetest;
publicclassYieldExample{
publicstaticvoidmain(String[]args){
Threadprocer=newProcer();
Threadconsumer=newConsumer();
procer.setPriority(Thread.MIN_PRIORITY);
consumer.setPriority(Thread.MAX_PRIORITY);
procer.start();
consumer.start();
}
}
classProcerextendsThread{
publicvoidrun(){
for(inti=0;i<5;i++){
System.out.println("IamProcer:ProcedItem"+i);
Thread.yield();
}
}
}
classConsumerextendsThread{
publicvoidrun(){
for(inti=0;i<5;i++){
System.out.println("IamConsumer:ConsumedItem"+i);
Thread.yield();
}
}
}

packagetest;
publicclassJoinExample{
publicstaticvoidmain(String[]args)throwsInterruptedException{
Threadt=newThread(newRunnable(){
publicvoidrun(){
System.out.println("Firsttaskstarted");
System.out.println("Sleepingfor2seconds");
try
{
Thread.sleep(2000);
}catch(InterruptedExceptione){
e.printStackTrace();
}
System.out.println("Firsttaskcompleted");
}
});
Threadt1=newThread(newRunnable(){
publicvoidrun(){
System.out.println("Secondtaskcompleted");
}
});
t.start();
t.join();
t1.start();
}
}
閱讀全文

與JAVA中yield相關的資料

熱點內容
qq下載的怎麼解壓文件 瀏覽:694
測畝寶app怎麼收費 瀏覽:371
我的世界地圖怎麼連接伺服器地址 瀏覽:352
計算機pdf下載 瀏覽:571
sp源碼怎麼編輯修改 瀏覽:832
程序員男票怎麼樣 瀏覽:609
程序員招聘追求什麼 瀏覽:410
tracert命令的使用 瀏覽:983
金蜘蛛的指標源碼 瀏覽:880
探探資源網站源碼 瀏覽:942
php調用webserver 瀏覽:237
程序員配聽診器 瀏覽:76
程序員免費連wifi 瀏覽:494
王者榮耀今天怎麼伺服器更新了 瀏覽:153
單片機拼搭 瀏覽:153
程序員沒必要穿沖鋒衣 瀏覽:409
nova隱藏app怎麼用 瀏覽:680
單片機程序中ret 瀏覽:225
愛奇藝上海演算法團隊 瀏覽:140
程序員顏值高的人 瀏覽:364