Pregunta Java: start() con un argumento

1 min de lectura

Piensa la respuesta antes de abrirla. Todas las opciones parecen razonables, y casi siempre hay un detalle que lo cambia todo.

Pregunta Java · Threads

¿Cuál es el resultado de ejecutar el siguiente código?

public class Prueba extends Thread {
    public void run() {
        System.out.println("método run 1");
    }
    public void run(String s) {
        System.out.println("método run 2");
    }
    public static void main(String[] args) {
        new Prueba().start("hola");
    }
}
  1. imprime "método run 1"
  2. imprime "método run 2"
  3. imprime "hola"
  4. No compila
Ver la respuesta

Respuesta: 4.

javac Prueba.javaPrueba.java:9: error: method start in class Thread cannot be applied to given types;
        new Prueba().start("hola");
                    ^
  required: no arguments
  found:    String
  reason: actual and formal argument lists differ in length
1 error

start() no recibe argumentos, y el compilador lo rechaza. Definir un run(String s) no cambia nada: es una sobrecarga que Thread no conoce. start() arranca un hilo nuevo y la máquina virtual llama en él al run() sin parámetros.

Si se escribe new Prueba().start();, el programa imprime método run 1. Para pasarle datos a un hilo se usa un campo o el constructor, o mejor aún, un Runnable con una lambda.

Pregunta publicada en 2013 y revisada en octubre de 2026. La respuesta se comprobó compilando y ejecutando el código con Java 25 LTS en un contenedor limpio; las salidas están copiadas de esa ejecución.

11 comentarios en «Pregunta Java: start() con un argumento»

Deja un comentario