導航:首頁 > 編程語言 > 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相關的資料

熱點內容
畫世界的app叫什麼 瀏覽:824
vc6編譯時顯示無法執行 瀏覽:547
java動態初始化數組 瀏覽:638
概率論與數理統計答案pdf 瀏覽:681
得物app上面的鞋為什麼這么貴 瀏覽:909
如何從愛思伺服器注銷游戲賬號 瀏覽:944
幼兒編程教育培訓多少錢 瀏覽:406
經常生氣有什麼東西能解壓 瀏覽:903
代理伺服器地址和埠可以怎麼填 瀏覽:65
unity5手游編譯模型 瀏覽:268
安卓無人機app源碼 瀏覽:811
pl1編程語言 瀏覽:801
台達plc編程換算指令大全 瀏覽:176
手機上的編程游戲 瀏覽:110
伺服器密碼機有什麼用 瀏覽:479
dos磁碟命令 瀏覽:957
單片機cpu52的功能 瀏覽:693
opc伺服器怎麼開發 瀏覽:375
覓喜是個什麼app 瀏覽:405
加密cd機 瀏覽:948