Rumah  >  Artikel  >  Java  >  Cara menggunakan kumpulan benang untuk melaksanakan pelaksanaan gelung tugas dan mengembalikan pemprosesan hasil dalam Java 7

Cara menggunakan kumpulan benang untuk melaksanakan pelaksanaan gelung tugas dan mengembalikan pemprosesan hasil dalam Java 7

PHPz
PHPzasal
2023-07-30 12:46:52930semak imbas

Cara menggunakan kumpulan benang dalam Java 7 untuk melaksanakan pelaksanaan tugasan kitaran dan pemprosesan hasil kembali

Di Java, kumpulan benang ialah teknologi pengaturcaraan berbilang benang yang penting, yang boleh digunakan apabila overhed untuk mencipta benang adalah tinggi guna semula dan pengurusan. Melalui kumpulan utas, berbilang tugasan boleh diserahkan kepada kumpulan utas untuk pelaksanaan Kumpulan utas mengekalkan kumpulan utas di latar belakang dan menjadualkan serta mengurus pelaksanaan utas ini mengikut dasar tertentu. Di Java 7, penggunaan kumpulan benang telah menjadi lebih mudah dan lebih mudah. Artikel ini akan memperkenalkan cara menggunakan kumpulan benang dalam Java 7 untuk melaksanakan pelaksanaan kitaran tugas dan memproses hasil kembali.

1. Buat kumpulan benang
Dalam Java 7, anda boleh menggunakan kelas ThreadPoolExecutor untuk mencipta kumpulan benang. ThreadPoolExecutor menyediakan pelbagai kaedah pembinaan untuk menyesuaikan bilangan utas teras, bilangan maksimum utas, baris gilir tugas, dasar penolakan dan parameter lain kumpulan benang. Berikut ialah kod contoh mudah untuk mencipta kumpulan benang:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ThreadPoolExample {
    public static void main(String[] args) {
        // 创建一个固定大小为5的线程池
        ExecutorService executorService = Executors.newFixedThreadPool(5);
        
        // ...
        
        // 关闭线程池
        executorService.shutdown();
    }
}

2. Hantar tugasan dan dapatkan hasil pulangan
Selepas mencipta kumpulan benang, kita boleh menyerahkan tugasan kepada kumpulan benang untuk dilaksanakan melalui kaedah submit() , dan lulus Objek Masa Depan untuk mendapatkan hasil pulangan tugas. Berikut ialah contoh kod:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class ThreadPoolExample {
    public static void main(String[] args) {
        ExecutorService executorService = Executors.newFixedThreadPool(5);
        
        // 提交任务并获取Future对象
        Future<String> future = executorService.submit(() -> {
            // 任务的具体逻辑
            // 这里以延时1秒返回结果为例
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return "Hello, World!";
        });
        
        try {
            // 获取任务的返回结果
            String result = future.get();
            System.out.println(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        executorService.shutdown();
    }
}

3. Gelung pelaksanaan tugas
Dalam sesetengah senario, kita mungkin perlu mengulangi satu set tugasan dan mendapatkan hasil pulangan setiap tugasan. Anda boleh menggunakan gelung for untuk menyerahkan tugasan, dan menggunakan Senarai untuk menyimpan objek Masa Depan untuk setiap tugas. Berikut ialah contoh kod:

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class ThreadPoolExample {
    public static void main(String[] args) {
        ExecutorService executorService = Executors.newFixedThreadPool(5);
        
        // 保存每个任务的Future对象
        List<Future<String>> futures = new ArrayList<>();
        
        // 循环执行10个任务
        for (int i = 0; i < 10; i++) {
            final int taskId = i;
            Future<String> future = executorService.submit(() -> {
                // 任务的具体逻辑
                // 这里以延时1秒返回结果为例
                try {
                    Thread.sleep(1000);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return "Task-" + taskId + " is completed.";
            });
            futures.add(future);
        }
        
        // 获取每个任务的返回结果
        for (Future<String> future : futures) {
            try {
                String result = future.get();
                System.out.println(result);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        executorService.shutdown();
    }
}

4. Ringkasan
Dengan menggunakan kumpulan benang, anda boleh melaksanakan pelaksanaan kitaran tugas dan mengembalikan pemprosesan hasil dalam Java 7. Apabila mencipta kumpulan benang, anda boleh melaraskan parameter kumpulan benang mengikut keperluan khusus apabila menyerahkan tugasan, anda boleh menyerahkan tugasan melalui kaedah submit(), dan menggunakan objek Masa Depan untuk mendapatkan hasil pulangan tugasan; ; apabila anda perlu melaksanakan tugas dalam gelung, Anda boleh menggunakan gelung for untuk menyerahkan tugas, dan menggunakan Senarai untuk menyimpan objek Masa Depan untuk setiap tugas. Dengan menggunakan kumpulan benang secara rasional, sumber sistem boleh digunakan sepenuhnya dan kecekapan pelaksanaan program boleh dipertingkatkan.

Atas ialah kandungan terperinci Cara menggunakan kumpulan benang untuk melaksanakan pelaksanaan gelung tugas dan mengembalikan pemprosesan hasil dalam Java 7. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn