¿Qué ocurre cuando se llama a un método en un hilo que ya está trabajando?

Zyzyx:

El funcionamiento de mi código de prueba a continuación, parece que llamar a un método hilos, mientras que todavía se está ejecutando ejecuta el método entre los hilos de ejecución actual. Lo que me pregunto es exactamente lo que está sucediendo?

¿El hilo pausar el bucle while, ejecutar el método, y luego volver al bucle? ¿Hace lo que al final del código de tiempo o en cualquier lugar en el medio?

¿O es ejecutar el método en otro hilo separado? O algo completamente distinto?

package test;

public class main {
    public static threed thred = new threed();

    public static void main(String[] args) throws InterruptedException {
        thred.start();
        Thread.sleep(10000);
        while (true) {
            System.out.println("doing it");
            thred.other();
            Thread.sleep(2000);
            thred.x++;
        }
    }
}

y

package test;

public class threed extends Thread {
    public int x;

    public threed() {
        x = 0;
    }

    public void run() {
        while (x < 10) {
            System.out.println(x);          
        }   
    }

    public void other() {
        System.out.println("other " + x);
    }
}
Peter Lawrey:

Todos los métodos llamados están utilizando el hilo actual para todos los objetos. Si se llama a un método en el Threadque también se llama a este método como cualquier otro en el hilo actual.

El único que es ligeramente confusión es que start()se inicia otro hilo y llamadas run()para que el nuevo hilo.

Esta es una de las razones que lo mejor es no extender Thread, pero pasar una Runnablea ella como con demasiada frecuencia, los métodos, o bien no hacen lo que parecen o sufre efectos adversos que no esperas.

NOTA: Java tiene a menudo un objeto proxy en el montón de la gestión de un recurso que es en realidad fuera del montón (nativo). Por ejemplo particular ByteBuffer o JTable o zócalo o FileOutputStream. Estos objetos no son el recurso actual, el sistema operativo las entiende, pero un objeto Java utiliza para que sea más fácil de manejar / manipular el recurso de código Java.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=196068&siteId=1
Recomendado
Clasificación