Sobes.tech
Junior

Java dilində hansı vasitələrlə axınlar yaradıla bilər?

sobes.tech Süni İntellekt

AI-dan cavab

Java-da ip yaratmaq üçün bir neçə üsul mövcuddur:

  1. Thread sinfindən irs almaq: Yeni sinif yaradılır və java.lang.Thread sinfindən irs alınır, run() metodu yenidən yazılır.

    // Thread-dən irs alan sinif yaradılır
    class MyThread extends Thread {
        // run() metodunu yenidən yazırıq
        @Override
        public void run() {
            // Yeni ipdə icra olunan kod
            System.out.println("Ip " + Thread.currentThread().getName() + " işə salındı.");
        }
    }
    

    İpi işə salmaq:

    // İp nümunəsi yaradılır
    MyThread thread = new MyThread();
    // İpi işə salırıq
    thread.start();
    
  2. Runnable interfeysinin tətbiqi: Sinif yaradılır və java.lang.Runnable interfeysini tətbiq edir, run() metodu təmin edilir. Sonra, Runnable obyektinə Thread obyekti yaradılır.

    // Runnable tətbiq edən sinif yaradılır
    class MyRunnable implements Runnable {
        // run() metodunu tətbiq edirik
        @Override
        public void run() {
            // Yeni ipdə icra olunan kod
            System.out.println("Ip " + Thread.currentThread().getName() + " işə salındı.");
        }
    }
    

    İpi işə salmaq:

    // Runnable nümunəsi yaradılır
    MyRunnable runnable = new MyRunnable();
    // Runnable ilə Thread obyekti yaradılır
    Thread thread = new Thread(runnable);
    // İpi işə salırıq
    thread.start();
    

    Bu üsul üstünlük təşkil edir, çünki sinif başqa sinflərdən də irs ala bilər.

  3. Callable interfeysinin tətbiqi və ExecutorService istifadə edilməsi: java.util.concurrent.Callable interfeysi, Runnable-a bənzər, başqa bir ipdə icra oluna bilən və nəticə qaytara bilən və istisnalar ata bilən vəzifəni təmsil edir. Callable-ı icra etmək üçün adətən java.util.concurrent.ExecutorService-dən ip hovuzları istifadə olunur.

    import java.util.concurrent.*;
    
    // Callable tətbiq edən sinif yaradılır
    class MyCallable implements Callable<String> {
        // call() metodunu tətbiq edirik, nəticə qaytara bilər
        @Override
        public String call() throws Exception {
            // Yeni ipdə icra olunan kod
            System.out.println("Ip " + Thread.currentThread().getName() + " işə salındı.");
            // Nəticəni qaytarırıq
            return "Tapşırıq uğurla tamamlandı!";
        }
    }
    

    İşə salma və nəticənin alınması:

    import java.util.concurrent.*;
    
    // İp hovuzunu yaradırıq
    ExecutorService executor = Executors.newFixedThreadPool(1);
    // Callable nümunəsini yaradırıq
    MyCallable callable = new MyCallable();
    // Tapşırığı icra üçün göndəririk və Future alırıq
    Future<String> future = executor.submit(callable);
    
    try {
        // Nəticəni alırıq
        String result = future.get();
        System.out.println("Nəticə: " + result);
    } catch (InterruptedException | ExecutionException e) {
        e.printStackTrace();
    } finally {
        // ExecutorService-i bağlayırıq
        executor.shutdown();
    }