Java benang ialah kolam sumber yang digunakan untuk mengurus dan menggunakan semula benang. Ia menyediakan mekanisme bersatu untuk mencipta, memusnahkan dan mengurus benang, membantu pembangun meningkatkan prestasi aplikasi dan memudahkan pengaturcaraan serentak.
Kelebihan
- Meningkatkan prestasi: Kumpulan benang boleh menjimatkan overhed mencipta dan memusnahkan benang, terutamanya dalam aplikasi yang memerlukan penciptaan dan pemusnahan benang secara kerap.
- ControlConcurrency: Dengan menetapkan saiz kumpulan benang, anda boleh mengawal bilangan utas yang dilaksanakan secara serentak dalam aplikasi untuk mengelakkan terlalu banyak utas daripada bersaing untuk mendapatkan sumber.
- Kegagalan Keselamatan: Apabila pengecualian berlaku pada benang dalam kumpulan benang, kumpulan benang akan mengendalikan dan pulih secara automatik, memastikan operasi aplikasi yang lancar.
Komponen utama
-
Pelaksana: Pelaksana ialah antara muka utama kumpulan benang Ia menyediakan satu set kaedah untuk mencipta, menyerahkan dan mengurus tugas.
-
ThreadPoolExecutor: ThreadPoolExecutor ialah pelaksanaan antara muka Executor, yang menyediakan kawalan ke atas saiz kumpulan benang, strategi penciptaan benang, baris gilir tugas dan ciri lain.
-
Baris Gilir Tugas: Baris gilir tugasan digunakan untuk menyimpan tugasan yang tidak dilaksanakan yang diserahkan kepada kumpulan benang. Barisan tugasan boleh bersempadan (saiz tetap) atau tidak bersempadan (saiz tidak terhad).
-
Kilang Benang: Kilang benang digunakan untuk mencipta benang dalam kumpulan benang Ia menyediakan pilihan untuk menyesuaikan strategi dan sifat penciptaan benang.
Cara ia berfungsi
- Apabila aplikasi menyerahkan tugasan ke kumpulan benang, tugasan itu ditambahkan pada baris gilir tugas.
- Kumpulan benang akan mencipta benang baharu atau menggunakan semula benang sedia ada untuk melaksanakan tugas berdasarkan saiz kumpulan benang dan strategi penciptaan benang.
- Selepas utas melaksanakan tugasan, tugasan akan ditanda sebagai selesai dan dialih keluar daripada baris gilir.
- Jika tiada benang tersedia dalam kumpulan benang, tugasan akan menunggu sehingga ada benang tersedia.
Jenis kolam benang
Java menyediakan tiga jenis kolam benang utama:
-
Kolam benang saiz tetap: Buat bilangan benang tetap, sentiasa mengekalkan bilangan benang yang sama.
-
Kolam Benang Cache: Mencipta bilangan utas yang tidak terhad, mengekalkannya apabila ia melahu dan memusnahkannya sebaliknya.
-
Kolam Benang Tunggal: Gunakan hanya satu utas untuk melaksanakan tugas.
Buat kumpulan benang
Kolam benang boleh dibuat melalui kelas Pelaksana:
ThreadPoolExecutor executor = new ThreadPoolExecutor(
corePoolSize, // 线程池核心大小
maximumPoolSize, // 线程池最大大小
keepAliveTime, // 空闲线程存活时间
TimeUnit.SECONDS, // 存活时间单位
new ArrayBlockingQueue<>(queueSize), // 任务队列
new DefaultThreadFactory() // 线程工厂
);
Penyerahan tugas
Anda boleh menghubungi kaedah submit()
或 execute()
Pelaksana untuk menyerahkan tugas:
executor.submit(() -> {
// 任务代码
});
Pengurusan Tugas
Kolam benang menyediakan pelbagai kaedah untuk menguruskan tugas, seperti:
-
shutdown(): Tutup kumpulan benang dan tidak lagi menerima tugasan baharu.
-
shutdownNow(): Hentikan kumpulan benang dengan serta-merta dan ganggu semua tugasan pelaksanaan.
-
tunggu Penamatan(): Tunggu kumpulan benang ditamatkan.
Amalan Terbaik
-
Pilih jenis kumpulan benang yang betul: Pilih jenis kumpulan benang yang paling sesuai berdasarkan keperluan khusus aplikasi anda.
-
Tetapkan saiz kolam benang yang munasabah: Saiz kolam benang hendaklah ditentukan berdasarkan keperluan keselarasan aplikasi dan sumber sistem.
-
Gunakan baris gilir tugas: Baris gilir tugas membantu menghalang aplikasi daripada mati kunci atau kebocoran memori akibat keselarasan yang berlebihan.
-
Pantau kumpulan benang: Gunakan Java Management Extensions (JMX) atau alat lain untuk memantau kesihatan kolam benang.
-
Mengendalikan Pengecualian: Laksanakan pengendali pengecualian tersuai untuk mengendalikan pengecualian yang berlaku semasa pelaksanaan rangkaian.
Atas ialah kandungan terperinci Penjelasan terperinci tentang kumpulan benang Java: dari kemasukan ke kemahiran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!