Каковы основные области использования yield () и чем он отличается от join () и interrupt ()?

Меня немного смущает использование метода yield () в Java, особенно в примере кода ниже. Я также читал, что yield () «используется для предотвращения выполнения потока».

У меня следующие вопросы:

  1. Я считаю, что приведенный ниже код дает один и тот же результат при использовании yield () и когда им не пользуются. Это правильно?

  2. Каковы, на самом деле, основные области использования yield () ?

  3. Чем yield () отличается от соединения () и interrupt () методы?

Пример кода:

public class MyRunnable implements Runnable {

   public static void main(String[] args) {
      Thread t = new Thread(new MyRunnable());
      t.start();

      for(int i=0; i<5; i++) {
          System.out.println("Inside main");
      }
   }

   public void run() {
      for(int i=0; i<5; i++) {
          System.out.println("Inside run");
          Thread.yield();
      }
   }
}

Я получаю тот же результат, используя приведенный выше код, как с использованием, так и без использования yield () :

Inside main
Inside main
Inside main
Inside main
Inside main
Inside run
Inside run
Inside run
Inside run
Inside run
98
задан BradleyDotNET 16 September 2014 в 21:34
поделиться