java 静态线程_Java线程类静态本机void yield()方法(带示例)
線程類靜態本機無效 yield()軟件包java.lang.Thread.yield()中提供了此方法。
yield()方法表示停止當前正在執行的線程,并為其他優先級相同的等待線程提供機會。
如果沒有等待線程,或者所有等待線程的優先級都較低,則同一線程將繼續執行。
這種方法的優點是有機會執行其他等待線程,因此,如果我們當前的線程需要更多時間來執行并將處理器分配給其他線程。
此方法是靜態的,因此我們也可以使用類名訪問此方法。
這是一個本地方法,這意味著該方法的實現在其他語言(例如C,C ++)中可用,因此只要需要此方法,就可以在類中聲明。
我們不能期望何時產生收益將由線程調度程序決定。
此方法的返回類型為void,因此它不返回任何內容。
語法:static?native?void?yield(){
}
參數:
在Thread方法中,我們不傳遞任何對象作為參數。
返回值:
此方法的返回類型為void,它不返回任何內容。
Java程序演示yield()方法示例/*??We?will?use?Thread?class?methods?so?we?are
importing?the?package?but?it?is?not?mandate?because
it?is?imported?by?default
*/
import?java.lang.Thread;
class?MyThread?extends?Thread?{
//run()Thread類的重寫方法
public?void?run()?{
for?(int?i?=?0;?i?
//通過調用yield()方法意味著MyThread停止其
//執行并給主線程一個機會
Thread.yield();
System.out.println("Thread?started:"?+?Thread.currentThread().getName());
}
System.out.println("Thread?ended:"?+?Thread.currentThread().getName());
}
}
class?Main?{
public?static?void?main(String[]?args)?{
//在這里,我們調用start()Thread類的方法,然后
//它將調用run()MyThread的方法
MyThread?mt?=?new?MyThread();
mt.start();
for?(int?i?=?0;?i?
System.out.println("Thread?started:"?+?Thread.currentThread().getName());
}
System.out.println("Thread?ended:"?+?Thread.currentThread().getName());
}
}
注意:如果我們在/*Thread.yield()*/這一行中添加注釋,則兩個線程將同時執行,我們無法預期哪個線程將完成其執行。
如果我們不注釋/*Thread.yield()*/這一行,那么就有可能首先執行主線程,因為MyThread總是調用yield()方法。
輸出結果E:\Programs>javac?Main.java
E:\Programs>java?Main
Thread?started:main
Thread?started:Thread-0
Thread?started:main
Thread?started:main
Thread?started:main
Thread?started:main
Thread?started:Thread-0
Thread?ended:main
Thread?started:Thread-0
Thread?started:Thread-0
Thread?started:Thread-0
Thread?ended:Thread-0
總結
以上是生活随笔為你收集整理的java 静态线程_Java线程类静态本机void yield()方法(带示例)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python底层源码_python源码剖
- 下一篇: 分别使用U+、B+、UD制作WinPE启