Sobes.tech
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();
      
  • Callable<V>:

    • Metoda call() vrací výsledek typu V a může házet výjimky.
    • Používá se, když je třeba získat výsledek provedení úlohy.
    • Obvykle se používá s ExecutorService a Future.
    • 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();
      

Tímto způsobem rozšiřuje Callable možnosti Runnable, umožňuje vracet výsledky a zpracovávat výjimky.