Junior — Middle
Quali sono le differenze tra le interfacce Runnable e Callable in Java?
sobes.tech AI
Risposta dell'AI
Le interfacce Runnable e Callable in Java sono utilizzate per eseguire compiti in thread separati, ma hanno differenze chiave:
-
Runnable:
- Il metodo
run()non restituisce risultato e non può lanciare eccezioni controllate. - Viene usato quando il compito non richiede di restituire un valore.
- Esempio:
Runnable compito = () -> System.out.println("Esecuzione del compito"); new Thread(compito).start();
- Il metodo
-
Callable<V>:
- Il metodo
call()restituisce un risultato di tipoVe può lanciare eccezioni. - Viene usato quando è necessario ottenere il risultato dell'esecuzione del compito.
- Di solito si utilizza con
ExecutorServiceeFuture. - Esempio:
Callable<Integer> compito = () -> { // calcoli return 123; }; ExecutorService executor = Executors.newSingleThreadExecutor(); Future<Integer> futuro = executor.submit(compito); Integer risultato = futuro.get(); executor.shutdown();
- Il metodo
In questo modo, Callable amplia le funzionalità di Runnable, consentendo di restituire risultati e gestire eccezioni.