¿Java es preventivo?

He visto muchas respuestas a esta pregunta, pero todavía no estoy seguro.

Uno de ellos fue "Java es preventivo". (La JVM programa utilizando un algoritmo de programación basado en prioridad, prioritario (generalmente algoritmo de turno rotativo).

El segundo fue que si se ejecutan 2 subprocesos con la misma prioridad, Java no prevalecerá y un subproceso podría morir de hambre.

Así que ahora escribí un programa para comprobarlo, creé 10 subprocesos con prioridad mínima seguidos de 10 subprocesos con prioridad máxima, los resultados fueron que salté entre todos los subprocesos, lo que significa que Java es preferente incluso si 2 subprocesos tienen el mismo prioridad

 /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication1;

import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @
 */
public class JavaApplication1 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        for (int i=0;i<10;i++){
            Thread t=new Thread(new Dog(i));
            t.setPriority(Thread.MIN_PRIORITY);
            t.start();
        }

        try {
            Thread.sleep(5000);
        } catch (InterruptedException ex) {
            Logger.getLogger(JavaApplication1.class.getName()).log(Level.SEVERE, null, ex);
        }
        for (int i = 0; i < 10; i++) {
            Thread g = new Thread(new Dog(i+10));
            g.setPriority(Thread.MAX_PRIORITY);
            g.start();
        }

    }
}

t

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication1;

/**
 *
 * @author Matan2t
 */
public class Dog implements Runnable{
    public int _x=-1;
    public Dog(int x){
        _x=x;
    }
    @Override
    public void run(){
        while(true){
            System.out.println("My Priority Is : " + _x);
        }
    }

}

Respuestas a la pregunta(1)

Su respuesta a la pregunta