Junior
Callable ve Runnable arayüzleri arasındaki fark nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Runnable - bu, bir iplik tarafından yürütülebilen görevi temsil eden fonksiyonel bir arayüzdür. Bir run() yöntemi vardır, bu yöntem argüman almaz1 ve değer döndürmez. Arka plan işlemlerini gerçekleştirmek için kullanılır ve sonuç gerekmez.
Callable - bu, aynı zamanda bir iplik tarafından yürütülebilen görevi temsil eden parametreli bir arayüzdür. Bir call() yöntemi vardır, bu yöntem genel bir <V> tipi (rastgele bir değer)2 döndürür ve bir istisna (Exception) atabilir. Sonuç kullanılacaksa uygundur.
Ana farklar:
| Özellik | Runnable |
Callable |
|---|---|---|
| Dönüş değeri | Yok | Evet (tip {@code <V>}) |
| İstisnalar | Yok (yöntem {@code run}) | Evet (yöntem {@code call}) |
| Yöntem | {@code void run()} | {@code V call() throws Exception} |
| Kullanım | {@code java.lang.Runnable} | {@code java.util.concurrent.Callable} |
Runnable kullanımı örneği:
// Runnable uygulaması:
Runnable task = new Runnable() {
@Override
public void run() {
// Sonuç döndürmeden bir işlem gerçekleştir
System.out.println("Runnable görevi yürütüldü");
}
};
// Bir thread içinde çalıştır:
new Thread(task).start();
Callable kullanımı örneği:
// Callable uygulaması:
Callable<String> task = new Callable<String>() {
@Override
public String call() throws Exception {
// Bir işlem gerçekleştir ve sonuç döndür:
return "Callable görevi sonuç ile yürütüldü";
}
};
// ExecutorService ile çalıştır:
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<String> future = executor.submit(task);
try {
// Sonucu al:
String result = future.get();
System.out.println(result);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
} finally {
executor.shutdown();
}