1. 程式人生 > >yield示例分析

yield示例分析

yield示例分析
public class TestYield {

    private static final Object lock = new Object();

    public static void main(String[] args) {
        YieldThread t1 = new YieldThread();
        YieldThread t2 = new YieldThread();
        t1.start();
        t2.start();
        /**
         * t1得到cpu執行權後,執行run時,獲取到lock物件的鎖,等到t2執行run時時會被阻塞
         * t1執行過程中,每當%4==0時,會進行cpu讓步
         * 但是由於【yield方法不會釋放鎖】,所以就算t2得到了cpu執行,但還是會被阻塞
         
*/ } static class YieldThread extends Thread{ @Override public void run() { synchronized (lock){ for (int i = 0; i < 10; i++) { System.err.println(this.getName()+"__"+i); if (i%4==0){
/** * yield:讓步 * 讓執行緒由“執行狀態”進入到“就緒狀態” * yield是讓出cpu執行時間片,而不釋放lock物件的鎖 */ Thread.yield(); } } } } } }