Sobes.tech
Junior — Middle

Paaiškinkite Callable sąsajos koncepciją ir jos tikslą programavime.

sobes.tech AI

Atsakymas iš AI

„Java“ kalbų Callable<V> sąsaja reprezentuoja užduotį, kuri gali būti vykdoma atskirame sraute ir grąžina rezultatą tipo V. Skirtingai nuo Runnable sąsajos, kuri negrąžina rezultato ir negali mesti patikrintų išimčių, Callable leidžia grąžinti reikšmę ir mesti išimtis.

Tai ypač naudinga dirbant su daugiabriauniais ir asinchroniniais užduočių vykdymais, pavyzdžiui, naudojant ExecutorService paleisti užduotis ir gauti jų rezultatus per Future objektus.

Naudojimo pavyzdys:

import java.util.concurrent.Callable;

public class SumTask implements Callable<Integer> {
    private int a, b;

    public SumTask(int a, int b) {
        this.a = a;
        this.b = b;
    }

    @Override
    public Integer call() throws Exception {
        return a + b;
    }
}

Tada šią užduotį galima perduoti ExecutorService ir gauti rezultatą:

ExecutorService executor = Executors.newSingleThreadExecutor();
Future<Integer> future = executor.submit(new SumTask(5, 10));
Integer result = future.get(); // rezultatas bus 15
executor.shutdown();