Sebagai bahasa pengaturcaraan yang sangat baik, Java digunakan secara meluas dalam pembangunan peringkat perusahaan. Antaranya, pengaturcaraan berbilang benang adalah salah satu kandungan teras Java. Dalam artikel ini, kami akan memperkenalkan cara menggunakan teknik pengaturcaraan berbilang benang dalam Java, serta contoh kod khusus.
Terdapat dua cara untuk mencipta thread dalam Java, iaitu mewarisi kelas Thread dan melaksanakan antara muka Runnable.
Cara untuk mewarisi kelas Thread adalah seperti berikut:
public class ExampleThread extends Thread { public void run() { //线程执行的代码 } }
Cara untuk melaksanakan antara muka Runnable adalah seperti berikut:
public class ExampleRunnable implements Runnable { public void run() { //线程执行的代码 } }
Perlu diingat bahawa cara untuk melaksanakan antara muka Runnable adalah lebih disyorkan. Kerana kelas Java hanya boleh diwarisi secara individu, jika anda mewarisi kelas Thread, anda tidak boleh mewarisi kelas lain. Selain itu, melaksanakan antara muka Runnable adalah lebih selaras dengan pemikiran berorientasikan objek, iaitu memisahkan benang daripada tugas khusus mereka dan mengurangkan gandingan antara kelas.
Dalam pengaturcaraan berbilang benang, memandangkan berbilang utas dilaksanakan serentak, ketidakkonsistenan data mungkin berlaku jika tiada pemprosesan dilakukan. Untuk tujuan ini, Java menyediakan mekanisme penyegerakan dan kunci untuk mengawal akses antara berbilang benang.
Mekanisme penyegerakan boleh ditambah pada kaedah atau blok kod, seperti berikut:
public synchronized void method(){ //线程要执行的代码 } public void run() { synchronized(this) { //线程要执行的代码 } }
Fungsi mekanisme penyegerakan adalah untuk memastikan hanya satu utas boleh mengakses blok kod atau kaedah yang disegerakkan pada masa yang sama. Ini mengelakkan perlumbaan data dan ketidakkonsistenan data.
Penggunaan kunci boleh mencapai kawalan yang lebih berkuasa, seperti berikut:
Lock lock = new ReentrantLock(); public void method(){ lock.lock(); try{ //线程要执行的代码 }finally{ lock.unlock(); } }
Fungsi kunci adalah sama seperti mekanisme penyegerakan, tetapi kunci juga boleh mencapai kawalan yang lebih kompleks. Sebagai contoh, anda boleh memohon kunci melalui kaedah lock() dan lepaskan kunci melalui kaedah buka kunci() Anda juga boleh cuba memohon kunci melalui kaedah tryLock(), tunggu untuk tempoh masa, dan kemudian menyerah permohonan jika ia tidak dipohon.
Kolam benang ialah komponen biasa pengaturcaraan berbilang benang di Jawa. Apabila mencipta benang, jika benang kerap dicipta dan dimusnahkan, ia akan menyebabkan pembaziran sumber sistem dan merendahkan prestasi. Kumpulan benang boleh menggunakan semula benang yang telah dibuat untuk meningkatkan penggunaan benang dan prestasi sistem.
Kolam benang dicipta dan digunakan seperti berikut:
ExecutorService threadPool = Executors.newFixedThreadPool(10); for(int i=0;i<100;i++){ threadPool.execute(new Runnable(){ public void run(){ //线程执行的代码 } }); }
Dalam kod di atas, kami menggunakan kumpulan benang untuk melaksanakan 100 tugasan. Antaranya, kaedah newFixedThreadPool(10) mencipta kumpulan benang dengan saiz tetap 10, dan kaedah execute() digunakan untuk menyerahkan tugasan kepada kumpulan benang.
Faedah kumpulan benang ialah anda boleh mengawal penggunaan sumber sistem dengan menetapkan saiz kumpulan benang, dan boleh mengurangkan overhed penciptaan dan pemusnahan benang. Selain itu, kumpulan benang juga boleh mengendalikan isu seperti pengecualian dan pembatalan tugas, dengan kebolehselenggaraan dan kebolehpercayaan yang lebih baik.
Ringkasan
Kemahiran pengaturcaraan berbilang benang Java melibatkan penciptaan benang, penyegerakan dan kunci, kumpulan benang dan banyak aspek lain. Pada bila-bila masa, reka bentuk pelbagai benang mesti mengambil kira ketekalan data dan kebolehpercayaan yang tinggi. Oleh itu, kita perlu menguasai kemahiran pengaturcaraan berbilang benang teras Java untuk menulis program serentak berkualiti tinggi.
Dalam artikel ini, kami memperkenalkan cara membuat benang dalam Java, penggunaan penyegerakan dan kunci, dan aplikasi kumpulan benang. Harap ini membantu.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan kemahiran pengaturcaraan berbilang benang teras JAVA. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!