Bagaimana cara menggunakan kumpulan benang dengan berkesan untuk melaksanakan pengaturcaraan serentak di Jawa? Buat kumpulan benang dan pra-peruntukkan satu set benang. Serahkan tugasan kepada kumpulan benang, dan benang memperoleh tugasan daripada baris gilir untuk pelaksanaan. Benang dalam kumpulan benang bertanggungjawab untuk memperoleh dan melaksanakan tugas dalam baris gilir, dan tugasan yang telah selesai dipadamkan secara automatik daripada baris gilir.
Cara menggunakan kumpulan benang secara berkesan untuk melaksanakan pengaturcaraan serentak dalam Java
Pengenalan kepada kumpulan benang
Kolam benang ialah struktur data khas yang digunakan untuk mengurus benang. Ia pra-peruntukkan satu set benang dan memperuntukkan benang daripadanya seperti yang diperlukan untuk melaksanakan tugas. Ini mengelakkan penciptaan dan pemusnahan benang yang kerap, dengan itu meningkatkan prestasi dan kecekapan.
Java Thread Pool
Thread pool di Jawa boleh dicipta oleh:
ExecutorService executor = Executors.newFixedThreadPool(5);
Antaranya, newFixedThreadPool
mencipta kumpulan benang saiz tetap dengan 5 benang di dalamnya. newFixedThreadPool
创建了一个固定大小的线程池,其中有 5 个线程。
任务提交
可以通过以下方式将任务提交到线程池:
executor.submit(task);
其中,task
是要执行的任务。
任务执行
线程池中的线程负责从队列中获取任务并执行它们。执行完成的任务会自动从队列中删除。
实战案例
以下是一个使用线程池进行并发处理的示例:
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 executor = Executors.newFixedThreadPool(5); // 创建任务列表 List<Integer> numbers = new ArrayList<>(); for (int i = 0; i < 10000; i++) { numbers.add(i); } // 将任务提交到线程池 List<Future<Integer>> futures = new ArrayList<>(); for (int number : numbers) { Future<Integer> future = executor.submit(() -> { return number * number; }); futures.add(future); } // 获取任务结果 List<Integer> results = new ArrayList<>(); for (Future<Integer> future : futures) { try { results.add(future.get()); } catch (Exception e) { e.printStackTrace(); } } // 关闭线程池 executor.shutdown(); } }
在这个示例中,ThreadPoolExample
类:
executor
)。numbers
)。executor.sumbit
)。results
ThreadPoolExample
: 🎜pelaksana
). 🎜🎜Buat senarai 10,000 nombor (executor.sumbit
). 🎜🎜Dapatkan hasil setiap tugasan dan tambahkannya pada Atas ialah kandungan terperinci Bagaimana untuk menggunakan kumpulan benang dengan cekap untuk melaksanakan pengaturcaraan serentak di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!