Junior
Callable və Runnable interfeysləri arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Runnable - bu, iplik tərəfindən icra edilə bilən vəzifəni təmsil edən funksional interfeysdir. Onun run() metodu var, hansı ki, arqument qəbul etmir1 və dəyər qaytarmır. Bu, arxa plan əməliyyatlarını yerinə yetirmək üçün istifadə olunur və nəticə tələb edilmir.
Callable - bu, eyni zamanda, iplik tərəfindən icra edilə bilən vəzifəni təmsil edən parametrli interfeysdir. Onun call() metodu var, hansı ki, ümumi <V> tipi (istənilən dəyər)2 qaytarır və istisna (Exception) ata bilər. Nəticəsindən istifadə olunmalı olan vəzifələr üçün uyğundur.
Əsas fərqlər:
| Xüsusiyyət | Runnable |
Callable |
|---|---|---|
| Qaytarılan dəyər | Yox | Bəli (tip {@code <V>}) |
| İstisnalar | Yox (metod {@code run}) | Bəli (metod {@code call}) |
| Metod | {@code void run()} | {@code V call() throws Exception} |
| İstifadə | {@code java.lang.Runnable} | {@code java.util.concurrent.Callable} |
Runnable-ın istifadəsinə nümunə:
// Runnable-ın tətbiqi:
Runnable task = new Runnable() {
@Override
public void run() {
// Nəticə qaytarmadan əməliyyat yerinə yetir
System.out.println("Runnable vəzifəsi icra olundu");
}
};
// İplə işə salın:
new Thread(task).start();
Callable-ın istifadəsinə nümunə:
// Callable-ın tətbiqi:
Callable<String> task = new Callable<String>() {
@Override
public String call() throws Exception {
// Əməliyyatı yerinə yetir və nəticə qaytar:
return "Callable vəzifəsi nəticə ilə icra olundu";
}
};
// ExecutorService ilə işə salın:
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<String> future = executor.submit(task);
try {
// Nəticəni alın:
String result = future.get();
System.out.println(result);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
} finally {
executor.shutdown();
}