Multithreading adalah subjek yang tak terhindarkan dan penting di Java. Di bawah ini kami akan mengembangkan pembelajaran multi-threading. Konten berikut adalah penjelasan konten multi-threaded Java sebelum "menambahkan paket JUC di JDK", yang mencakup antarmuka seperti tunggu (), notify () di kelas objek;
Catatan: Paket JUC mengacu pada paket java.util.concurrent, yang dilakukan oleh Java Master Doug Lea dan ditambahkan ke Java dalam versi JDK 1.5.
Sebelum memasuki studi tentang bab -bab berikut, pertama -tama pahami beberapa konsep terkait multithreading.
Diagram Status Thread
menjelaskan:
Thread termasuk 5 negara berikut.
1. Status Baru: Setelah objek utas dibuat, ia memasuki keadaan baru. Misalnya, utas utas = utas baru ().
2. Runnable: Juga dikenal sebagai "negara yang dapat dieksekusi". Setelah objek utas dibuat, utas lain memanggil metode start () objek untuk memulai utas. Misalnya, thread.start (). Sebuah utas dalam keadaan siap dapat dijadwalkan untuk dieksekusi oleh CPU kapan saja.
3. Running State (Running): Utas memperoleh izin CPU untuk dieksekusi. Perlu dicatat bahwa utas hanya dapat memasuki keadaan berjalan dari keadaan siap.
4. Status yang diblokir: Keadaan yang diblokir berarti bahwa utas tersebut menyerahkan hak penggunaan CPU untuk beberapa alasan dan sementara berhenti berjalan. Tidak sampai utas memasuki keadaan siap, ia memiliki kesempatan untuk pergi ke keadaan berjalan. Ada tiga jenis penyumbatan:
(01) Menunggu untuk memblokir - dengan memanggil metode wait's wait (), biarkan utas menunggu untuk menyelesaikan pekerjaan tertentu.
(02) Pemblokiran yang disinkronkan-Sebuah utas gagal untuk memperoleh kunci sinkronisasi yang disinkronkan (karena kunci ditempati oleh utas lain), itu akan memasuki keadaan pemblokiran yang disinkronkan.
(03) Pemblokiran lainnya-utas akan memasukkan status pemblokiran dengan menelepon tidur () atau bergabung () dari utas atau mengeluarkan permintaan I/O. Ketika status tidur () diatur waktu, bergabung () menunggu utas untuk diakhiri atau diatur waktunya, atau pemrosesan I/O selesai, utas yang dimasukkan kembali ke keadaan siap.
5. Status Mati: Utas telah selesai mengeksekusi atau keluar dari metode run () karena pengecualian, dan utas mengakhiri siklus hidupnya.
Isi yang terlibat dalam 5 negara bagian ini termasuk kelas objek, utas dan kata kunci yang disinkronkan. Kami akan mempelajari konten ini satu per satu di bab -bab berikut.
Kelas objek, mendefinisikan fungsi tidur/bangun seperti tunggu (), notify (), notifyall (), dll.
Kelas Thread Menentukan beberapa fungsi operasi utas kolom. Misalnya, fungsi tidur () fungsi tidur, interupsi () fungsi interupsi, getName () Dapatkan nama utas, dll.
Sinkronisasi adalah kata kunci; Fungsi sinkronisasi adalah untuk memungkinkan utas untuk memperoleh kunci sinkronisasi objek.
Ketika kami memperkenalkan tunggu (), notify () dan metode lain secara rinci nanti, kami akan menganalisis mengapa "tunggu (), beri tahu () dan metode lain harus didefinisikan dalam kelas objek, bukan kelas utas."