1. 程式人生 > >java多執行緒->java中yield()方法使用

java多執行緒->java中yield()方法使用

Thread.yield()方法作用是:暫停當前正在執行的執行緒物件,並執行其他執行緒。

yield()應該做的是讓當前執行執行緒回到可執行狀態,以允許具有相同優先順序的其他執行緒獲得執行機會。因此,使用yield()的目的是讓相同優先順序的執行緒之間能適當的輪轉執行。但是,實際中無法保證yield()達到讓步目的,因為讓步的執行緒還有可能被執行緒排程程式再次選中。

結論:yield()從未導致執行緒轉到等待/睡眠/阻塞狀態。在大多數情況下,yield()將導致執行緒從執行狀態轉到可執行狀態,但有可能沒有效果。
public class TestYield {
 public static void main(String[] args) {
   MyThread3 t1 = new MyThread3("t1");
   MyThread3 t2 = new MyThread3("t2");
   t1.start();
   t2.start();
 }
 }
 class MyThread3 extends Thread {
    
     MyThread3(String s) {
     super(s);
     }
   public void run() {
     for(int i = 1;i <=100; i++) {
      System.out.println(getName() + ":"+i);
      if(i == 0)
           yield();
      }
    }
  }

簡單總結:
這個方法的作用是將呼叫此方法的執行緒跟另一個執行緒合併,也就是說另一個執行緒將等待此執行緒執行完畢後再繼續執行。
這個方法是執行緒方法,當一個執行緒搶到執行權後,執行到yield()方法後,就會放棄執行權,其他執行緒就可以拿到執行權 了。