Quali sono gli usi principali di yield () e in che cosa differisce da join () e interrupt ()?

Sono un po ‘confuso sull’uso del metodo yield() in Java, in particolare nel codice di esempio qui sotto. Ho anche letto che yield () è ‘usato per impedire l’esecuzione di un thread’.

Le mie domande sono:

  1. Credo che il codice sottostante produca lo stesso risultato sia quando si usa yield() sia quando non lo si utilizza. È corretto?

  2. Quali sono, in effetti, gli usi principali di yield() ?

  3. In che modo yield() diverso dai metodi join() e interrupt() ?

    L’esempio di codice:

     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(); } } } 

    Ottengo lo stesso risultato usando il codice sopra sia con che senza yield() :

     Inside main Inside main Inside main Inside main Inside main Inside run Inside run Inside run Inside run Inside run