Sobes.tech
Junior

Java tilida qanday vositalar yordamida oqimlar yaratish mumkin?

sobes.tech AI

AIdan javob

Java'da ipni yaratishning bir necha usullari mavjud:

  1. Thread sinfidan meros olish: Yangi sinf yaratiladi va java.lang.Thread dan meros oladi, run() metodi qayta yoziladi.

    // Thread dan meros oluvchi sinf yaratamiz
    class MyThread extends Thread {
        // run() metodini qayta yozamiz
        @Override
        public void run() {
            // Yangi ipda bajariladigan kod
            System.out.println("Ip " + Thread.currentThread().getName() + " ishga tushirildi.");
        }
    }
    

    Ipni ishga tushirish:

    // Ip nusxasini yaratamiz
    MyThread thread = new MyThread();
    // Ipni ishga tushiramiz
    thread.start();
    
  2. Runnable interfeysini amalga oshirish: Sinf yaratiladi va java.lang.Runnable interfeysini amalga oshiradi, run() metodini taqdim etadi. So'ngra, Runnable obyekti bilan Thread obyekti yaratiladi.

    // Runnable ni amalga oshiradigan sinf yaratamiz
    class MyRunnable implements Runnable {
        // run() metodini amalga oshiramiz
        @Override
        public void run() {
            // Yangi ipda bajariladigan kod
            System.out.println("Ip " + Thread.currentThread().getName() + " ishga tushirildi.");
        }
    }
    

    Ipni ishga tushirish:

    // Runnable ni yaratamiz
    MyRunnable runnable = new MyRunnable();
    // Runnable bilan Thread obyekti yaratamiz
    Thread thread = new Thread(runnable);
    // Ipni ishga tushiramiz
    thread.start();
    

    Bu usul afzalroq, chunki sinf boshqa sinflardan meros olishi mumkin.

  3. Callable interfeysini amalga oshirish va ExecutorService dan foydalanish: java.util.concurrent.Callable interfeysi, Runnable ga o'xshash, boshqa ipda bajariladigan vazifani ifodalaydi, lekin call() metodi natija qaytarishi va istisnolarni tashlashi mumkin. Callable ni bajarish uchun odatda java.util.concurrent.ExecutorService dan ip havuzlari ishlatiladi.

    import java.util.concurrent.*;
    
    // Callable ni amalga oshiradigan sinf yaratamiz
    class MyCallable implements Callable<String> {
        // call() metodini amalga oshiramiz, u natija qaytarishi mumkin
        @Override
        public String call() throws Exception {
            // Yangi ipda bajariladigan kod
            System.out.println("Ip " + Thread.currentThread().getName() + " ishga tushirildi.");
            // Natijani qaytarish
            return "Vazifa muvaffaqiyatli bajarildi!";
        }
    }
    

    Ishga tushirish va natijani olish:

    import java.util.concurrent.*;
    
    // Ip havuzini yaratamiz
    ExecutorService executor = Executors.newFixedThreadPool(1);
    // Callable ni yaratamiz
    MyCallable callable = new MyCallable();
    // Vazifani bajarishga yuboramiz va natija uchun Future olamiz
    Future<String> future = executor.submit(callable);
    
    try {
        // Vazifa natijasini olamiz
        String result = future.get();
        System.out.println("Natija: " + result);
    } catch (InterruptedException | ExecutionException e) {
        e.printStackTrace();
    } finally {
        // ExecutorService ni yopamiz
        executor.shutdown();
    }