Kolam benang, seperti namanya, mencadangkan ialah koleksi benang yang boleh digunakan semula. Benang ini telah dibuat sebelum ini dan juga boleh berfungsi dengan menawarkan penyelesaian kepada overhed apabila sudah ada koleksi benang tersedia; ini boleh digunakan semula dan menyelesaikan isu kitaran benang dan menunggu benang menyelesaikan tugas mereka. Memandangkan utas akan sedia ada apabila permintaan itu tiba, ia akan mengalih keluar proses penciptaan utas dan, akibatnya, menjimatkan masa itu dan membuat pemprosesan lebih cepat. Dalam topik ini, kita akan belajar tentang Java Thread Pool.
Mulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Semua utas dalam kumpulan benang melaksanakan kaedah daripada java.util.concurrent. Terdapat kolam benang yang diuruskan oleh kolam benang Java. Cara paling mudah untuk melihat kumpulan ini ialah lebih banyak urutan yang anda gunakan, semakin sedikit masa yang akan diluangkan oleh setiap utas semasa melakukan kerja sebenar. Ia adalah cara yang membantu dalam menjimatkan sumber dalam aplikasi di mana pelbagai benang boleh digunakan. Terdapat baris gilir yang diselenggara oleh benang Java ini untuk kumpulan.
Urut pekerja terus menunggu untuk tugasan diberikan dan melaksanakannya. Untuk mencipta kumpulan benang, ThreadPoolExecutor digunakan dalam Java. Pengumpulan benang boleh jalan bertanggungjawab untuk menguruskan benang dalam kumpulan Benang Java. Selepas ini, benang pekerja datang dalam gambar dan membentuk baris gilir. Kumpulan benang memantau baris gilir ini.
Java.util.concurrent.Executors membantu kami dengan kilang dan kaedah sokongan yang diperlukan untuk menguruskan rangkaian. Kelas ini juga bertanggungjawab untuk mencipta kumpulan benang. Sekarang soalan anda yang seterusnya mungkin, apakah Pelaksana ini? Pelaksana menyediakan kelas berbeza yang merupakan sebahagian daripada kelas utiliti.
Kerja teknikal kumpulan benang boleh dianggap seperti kumpulan yang anda mempunyai kod serentak anda, yang dibahagikan kepada tugas yang boleh dijalankan secara selari. Kemudian mereka diserahkan untuk pelaksanaan ke kolam. Terdapat penyerah tugas, Perkhidmatan Pelaksana, baris gilir tugas, dan pada akhirnya, kumpulan benang. Corak boleh membantu anda dalam mengawal bilangan utas yang terdapat dalam aplikasi. Ia menentukan kitaran hayatnya, menjadualkan tugasan dan memastikan tugasan masuk dalam baris gilir kerja.
Kelas Executorshelper mempunyai pelbagai kaedah yang mempunyai contoh kumpulan benang yang diprakonfigurasikan. Antara muka Executor dan ExecutorService membantu dalam bekerja dengan pelaksanaan yang berbeza dalam kumpulan. Kod mesti dalam format decoupled sebelum pelaksanaan sebenar. Terdapat satu lagi antara muka yang digunakan. Ia adalah ThreadPoolExecutor. Ia merupakan pelaksanaan kumpulan benang yang boleh dilanjutkan di mana banyak parameter boleh ditentukan, dan ia akan menghasilkan penalaan halus. Parameter yang boleh digunakan termasuk saiz kolam teras, saiz kolam maksimum dan masa keepalive. Barisan beratur boleh membesar hanya sehingga saiz kolam maksimum.
Mari kita cipta kolam dan lihat cara ia berfungsi.
Kod:
import java.util.Date; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; // The Job class will be executed in this case class Job implements Runnable { private String name; public Job(String s) { name = s; } // The task name will be populated first for the ones which were not running already, and the thread will sleep for 2s //This entire method will be repeated 6 times public void run() { try { for (int i = 0; i<=5; i++) { if (i==0) { Date d = new Date(); System.out.println("We are in " + " task name - "+ name); //prints the task name every time the new task is started } else { System.out.println("The job "+ name +" is already running "); // prints the job name which is already running } Thread.sleep(2000); // The thread is in sleep mode for 2 secs } System.out.println(name+" job is completes"); } catch(InterruptedException e) { e.printStackTrace(); } } } public class Test { // Here we define the maximum threads we have static final int MAX_Threads= 5; public static void main(String[] args) { Runnable run1 = new Job("task 1"); Runnable run2 = new Job("task 2"); Runnable run3 = new Job("task 3"); //A new thread pool is created with maximum number of threads ExecutorService newpool = Executors.newFixedThreadPool(MAX_Threads); newpool.execute(run1); newpool.execute(run2); newpool.execute(run3); newpool.shutdown(); } }
Kod di atas merangkumi setiap langkah penciptaan utas sehingga ia ditutup. Terdapat had maksimum benang yang ditetapkan dan dibuat. Setelah ini dilakukan, terdapat tiga pekerjaan yang dicipta yang dilaksanakan satu persatu. Terdapat juga masa tidur yang diperuntukkan selama 2 saat untuk setiap kerja. Memandangkan kumpulan benang dibuat dan semua kerja berfungsi serentak, kita dapat melihat bahawa keseluruhan proses ini akan berjalan 6 kali. Apabila pernyataan if dijalankan dalam kumpulan benang, ia menyemak sama ada kerja itu sudah berjalan atau tidak. Jika kerja belum mula berjalan, ia akan melaksanakan blok if. Jika ia sudah berjalan, maka blok else akan dijalankan. Ia akan memaparkan nama kerja dan mengatakan bahawa ia sudah berjalan. Kumpulan benang dibuat, dan kemudian semua 3 kerja dijalankan. Setelah kerja dijalankan, kami menutup kumpulan benang yang telah kami buat.
Di bawah adalah output program yang diberikan.
Output:
Ia berjalan sehingga semua tugasan selesai.
Kami mempunyai beberapa kelebihan Thread Pool di Jawa. Untuk menamakan beberapa, di bawah adalah kelebihan utama:
Kami juga mempunyai beberapa kelemahan kumpulan benang, walaupun. Di bawah adalah keburukan:
Akibatnya, kumpulan benang ialah cara yang cekap untuk mengendalikan pelbagai tugas yang ada di tangan kami. Java memberi kami kemudahan untuk menggunakan semula benang dan menggunakan sumber sedia ada.
Atas ialah kandungan terperinci Kolam Benang Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!