La diferencia entre el método de inicio y la ejecución del método en hilo
En un hilo, si el método de inicio llama al método Ejecutar a su vez, ¿por qué elegimos llamar al método de inicio? ¿O cuál es la diferencia entre llamar al método de inicio y el método Ejecutar en un hilo de Java? Estas dos preguntas son dos preguntas de entrevista múltiples muy populares en el nivel principiante. Cuando un programador de Java comienza a aprender subprocesos, primero aprenderá a heredar la clase de subprocesos, sobrecargar el método Ejecutar o implementar la interfaz ejecutable, implementar el método Ejecutar y luego llamar al método de inicio de la instancia de hilo. Pero después de que tenga algo de experiencia, encontrará que el método de inicio llamará al método de ejecución internamente mirando la documentación de la API u otras formas, pero muchos de nosotros sabemos que cuando se nos pregunte durante la entrevista, nos daremos cuenta de la importancia de esta pregunta. En este tutorial de Java, comprenderemos la diferencia entre llamar al método de inicio y el método Ejecutar al iniciar los subprocesos en Java
Esta publicación es una posdata de algunos de nuestros artículos publicados en Java multithreading, por ejemplo, la diferencia entre Runnable y Thread en Java y cómo resolver el problema del consumidor del productor en Java usando Bloquingqueue. Si aún no los ha leído, puede encontrarlos interesantes y útiles.
La diferencia entre el inicio y la ejecución en el hilo de Java
La principal diferencia entre los métodos de inicio y ejecución es que cuando el programa llama al método de inicio, se creará un nuevo hilo y el código en el método Ejecutar se ejecutará en el nuevo hilo. Sin embargo, cuando llame directamente al método Ejecutar, el programa no creará un nuevo hilo, y el código dentro del método Ejecutar se ejecutará en el hilo actual. En la mayoría de los casos, llamar al método de ejecución es un error o un error. Debido a que la intención original de la persona que llama es llamar al método de inicio para iniciar un nuevo hilo, este error puede ser detectado por muchas herramientas de cobertura de código estático, como Fingbugs. Si desea ejecutar una tarea que lleva mucho tiempo, es mejor usar el método de inicio, de lo contrario, su hilo principal se atascará cuando llame al método Ejecutar. Otra diferencia es que una vez que se inicia un hilo, no puede llamar repetidamente el método de inicio del objeto de subproceso. Llamar al método de inicio del hilo que ya ha comenzado informará una excepción de IllegalStateException, pero puede llamar repetidamente el método Ejecutar
La siguiente es la demostración del método de inicio y el método Ejecutar
La tarea en el hilo es imprimir el nombre del hilo actual pasado en el valor de cadena.
Aquí podemos ver claramente la diferencia entre los dos
clase pública DiffbewteenStartandrun {public static void main (string args []) {System.out.println (Thread.CurrentThread (). getName ()); // Creación de dos hilos para el método de inicio y ejecución de la llamada de hilo startThread = new Thread (nueva tarea ("inicio")); Hilo runThread = new Thread (nueva tarea ("Ejecutar")); startThread.start (); // Método de inicio llamado de hilo - ejecutará en // nuevo hilo runthread.run (); // Método de ejecución de llamadas de hilo - ejecutará en // hilo actual}/ * * implementación de ejecución simple */ private static class tarea implementos runnable {private string llamado; Tarea pública (String Caller) {this.caller = Caller; } @Override public void run () {System.out.println ("Caller:" + Caller + "y el código en este hilo se ejecuta por:" + thread.currentThread (). GetName ()); }}}Gracias por leer, espero que pueda ayudarte. ¡Gracias por su apoyo para este sitio!