Rumah >Java >javaTutorial >Bagaimana untuk Melaksanakan Barisan Pengeluar-Pengguna dengan Cekap di Jawa?
Melaksanakan Barisan Pengeluar-Pengguna
Dalam pengaturcaraan serentak, corak pengeluar-pengguna memerlukan benang pengeluar menghasilkan item untuk baris gilir dan benang pengguna memakannya. Melaksanakan corak ini dengan baris gilir memerlukan pertimbangan yang teliti.
Pelaksanaan Alternatif:
Pilihan 1: Baris Statik
Dalam ini pendekatan, baris gilir statik dikongsi antara benang pengeluar dan pengguna. Setiap utas secara langsung mengakses baris gilir, yang berpotensi menimbulkan konflik. Walaupun benang-selamat, ia boleh membawa kepada isu konkurensi dengan berbilang urutan mengakses baris gilir secara serentak.
Pilihan 2: Baris Berasaskan Contoh
Daripada baris gilir statik, setiap pengeluar dan pengguna mempunyai contoh baris gilir sendiri. Ini memastikan keselamatan benang kerana setiap benang hanya berinteraksi dengan baris gilirnya sendiri. Walau bagaimanapun, adalah penting untuk memastikan baris gilir dihantar ke utas dengan betul.
Pelaksanaan Java 5:
Java 5 dan kemudiannya menyediakan mekanisme yang lebih canggih untuk mengurus utas dan baris gilir:
Kod Contoh:
final ExecutorService producers = Executors.newFixedThreadPool(100); final ExecutorService consumers = Executors.newFixedThreadPool(100); while (/* has more work */) { producers.submit(...); } producers.shutdown(); producers.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); consumers.shutdown(); consumers.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
Dalam ini pelaksanaan, pengeluar menyerahkan tugas terus kepada ExecutorService benang pengguna, menghapuskan keperluan untuk beratur.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Barisan Pengeluar-Pengguna dengan Cekap di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!