Solución:
Desde Java 8 puede usar una forma más corta:
new Thread(() -> {
// Insert some method call here.
}).start();
Actualizar:
Además, puede usar la referencia de método:
class Example {
public static void main(String[] args){
new Thread(Example::someMethod).start();
}
public static void someMethod(){
// Insert some code here
}
}
Puede usarlo cuando su lista de argumentos es la misma que en la @FunctionalInterface requerida, por ejemplo, Runnable o Callable.
Actualización 2:
Recomiendo encarecidamente utilizar java.util.concurrent.Executors#newSingleThreadExecutor()
para ejecutar tareas de disparar y olvidar.
Ejemplo:
Executors
.newSingleThreadExecutor()
.submit(Example::someMethod);
Ver más: Platform.runLater
y Task
en JavaFX, referencias de métodos.
En primer lugar, recomendaría consultar la documentación de Java Thread.
Con un Thread, puede pasar un tipo de interfaz llamado Runnable
. La documentación se puede encontrar aquí. Un ejecutable es un objeto que tiene un run
método. Cuando inicias un hilo, llamará al código que esté en el run
método de este objeto ejecutable. Por ejemplo:
Thread t = new Thread(new Runnable() {
@Override
public void run() {
// Insert some method call here.
}
});
Ahora, lo que esto significa es cuando llamas t.start()
, ejecutará cualquier código que necesite sin retrasar el hilo principal. Esto se llama Asynchronous
llamada al método, lo que significa que se ejecuta en paralelo a cualquier otro hilo que tenga abierto, como su main
hilo. 🙂
En Java 8, si no se requieren parámetros, puede usar:
new Thread(MyClass::doWork).start();
O en caso de parámetros:
new Thread(() -> doWork(someParam))