Java dilinde hangi araçlar kullanılarak akışlar oluşturulabilir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Java'da bir iş parçacığı birkaç farklı şekilde oluşturulabilir:
-
Threadsınıfından kalıtım: Yeni bir sınıf oluşturulur vejava.lang.Threadsınıfından kalıtılır,run()metodu geçersiz kılınır.// Thread'ten kalıtım alan bir sınıf oluşturuyoruz class MyThread extends Thread { // run() metodunu geçersiz kılıyoruz @Override public void run() { // Yeni iş parçacığında çalışacak kod System.out.println("İş parçacığı " + Thread.currentThread().getName() + " başlatıldı."); } }İş parçacığını başlatmak:
// İş parçacığı örneği oluşturuyoruz MyThread thread = new MyThread(); // İş parçacığını başlatıyoruz thread.start(); -
Runnablearayüzünün uygulanması: Bir sınıf oluşturulur vejava.lang.Runnablearayüzü uygulanır,run()metodu sağlanır. Daha sonra,Runnablenesnesi ile birThreadnesnesi oluşturulur.// Runnable arayüzünü uygulayan bir sınıf oluşturuyoruz class MyRunnable implements Runnable { // run() metodunu uygularız @Override public void run() { // Yeni iş parçacığında çalışacak kod System.out.println("İş parçacığı " + Thread.currentThread().getName() + " başlatıldı."); } }İş parçacığını başlatmak:
// Runnable örneği oluşturuyoruz MyRunnable runnable = new MyRunnable(); // Runnable ile bir Thread nesnesi oluşturuyoruz Thread thread = new Thread(runnable); // İş parçacığını başlatıyoruz thread.start();Bu yöntem tercih edilir çünkü sınıfın başka sınıflardan da kalıtımına izin verir.
-
Callablearayüzü veExecutorServicekullanımı:java.util.concurrent.Callablearayüzü,Runnable'a benzer şekilde, başka bir iş parçacığında çalıştırılabilen bir görevi temsil eder, ancakcall()metodu sonuç döndürebilir ve istisnalar atabilir.Callable'ı çalıştırmak için genelliklejava.util.concurrent.ExecutorService'den thread havuzları kullanılır.import java.util.concurrent.*; // Callable arayüzünü uygulayan bir sınıf oluşturuyoruz class MyCallable implements Callable<String> { // Sonuç döndürebilen call() metodunu uygularız @Override public String call() throws Exception { // Yeni iş parçacığında çalışacak kod System.out.println("İş parçacığı " + Thread.currentThread().getName() + " başlatıldı."); // Sonucu döndür return "Görev başarıyla tamamlandı!"; } }Çalıştırma ve sonucu alma:
import java.util.concurrent.*; // Thread havuzu oluşturuyoruz ExecutorService executor = Executors.newFixedThreadPool(1); // Callable örneği oluşturuyoruz MyCallable callable = new MyCallable(); // Görevi çalıştırmak ve sonucu takip etmek için Future alıyoruz Future<String> future = executor.submit(callable); try { // Görevin sonucunu alıyoruz String result = future.get(); System.out.println("Sonuç: " + result); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } finally { // ExecutorService'i kapatıyoruz executor.shutdown(); }