Junior — Middle
Jaké jsou rozdíly mezi rozhraními Runnable a Callable v Java?
sobes.tech AI
Odpověď od AI
Rozhraní Runnable a Callable v Javě slouží k provádění úloh v samostatných vláknech, ale mají klíčové rozdíly:
-
Runnable:
- Metoda
run()nevrací výsledek a nemůže házet kontrolované výjimky. - Používá se, když úloha nevyžaduje vrácení hodnoty.
- Příklad:
Runnable úloha = () -> System.out.println("Provádění úlohy"); new Thread(úloha).start();
- Metoda
-
Callable<V>:
- Metoda
call()vrací výsledek typuVa může házet výjimky. - Používá se, když je třeba získat výsledek provedení úlohy.
- Obvykle se používá s
ExecutorServiceaFuture. - Příklad:
Callable<Integer> úloha = () -> { // výpočty return 123; }; ExecutorService executor = Executors.newSingleThreadExecutor(); Future<Integer> budoucnost = executor.submit(úloha); Integer výsledek = budoucnost.get(); executor.shutdown();
- Metoda
Tímto způsobem rozšiřuje Callable možnosti Runnable, umožňuje vracet výsledky a zpracovávat výjimky.