Implementasi Thread
Di Java, Metode Jalankan menunjukkan tugas yang harus diselesaikan untuk utas.
1. Mewarahkan kelas utas dan mengganti metode yang dijalankan. Kemudian buat objek subclass ini dan panggil metode start ().
2. Tentukan kelas yang mengimplementasikan antarmuka yang dapat dijalankan dan kemudian mengimplementasikan metode RUN. Objek kelas ini dilewatkan sebagai parameter saat membuat utas, dan kemudian metode start () dipanggil.
Kelas utas adalah kelas yang digunakan secara khusus untuk membuat utas dan beroperasi di utas. Ketika kelas mewarisi kelas utas, kelas disebut kelas utas.
Kedua metode memerlukan pelaksanaan metode start () dari utas untuk mengalokasikan sumber daya sistem yang diperlukan ke utas, jadwalkan utas untuk menjalankan dan menjalankan metode run () dari utas.
Metode start () adalah satu -satunya cara untuk memulai utas. Metode start () pertama -tama menyiapkan sumber daya sistem untuk pelaksanaan utas, dan kemudian memanggil metode run (). Benang hanya dapat dimulai sekali, dan ilegal untuk memulai lagi.
Pekerjaan utas dimasukkan ke dalam metode run (), yaitu, semua hal yang kami ingin utas ini lakukan. Secara default, metode run () tidak melakukan apa pun.
Dalam aplikasi tertentu, metode mana untuk membangun utas tergantung pada situasinya. Secara umum, ketika sebuah utas mewarisi kelas lain, itu harus dibangun dengan cara kedua, yaitu, menerapkan antarmuka yang dapat dijalankan.
Berikut adalah dua contoh untuk menggambarkan dua metode implementasi utas.
Public ThreadTest1 {public static void main (string [] args) {thread1 thread1 = new thread1 (); {@Override public void run () {for (int i = 0; i <100; ++ i) {System.out.println ("Hello World:" +i); public void run () {for (int i = 0; i <100; ++ i) {System.out.println ("Welcome:" +i); ] args) {// Metode lain dari implementasi utas juga dapat menggunakan utas kelas dalam anonim = utas baru (myThread1 baru ()); .start ();}} kelas myThread1 mengimplementasikan runnable {@Override public void run () {for (int i = 0; i <100; ++ i) {System.out.println ("Hello:" +i); }}} kelas MyThread2 mengimplementasikan runnable {@Override public void run () {for (int i = 0; i <100; ++ i) {System.out.println ("Selamat datang:" +i);
Analisis kelas utas
Kelas utas juga mengimplementasikan antarmuka runnable, sehingga mengimplementasikan metode run () di antarmuka.
Saat menghasilkan objek utas, jika tidak ada nama yang ditentukan untuk itu, nama objek utas akan dalam bentuk: number utas, yang merupakan angka yang ditingkatkan secara otomatis dan dibagikan oleh semua objek utas karena merupakan anggota statis variabel.
Saat menggunakan metode pertama (cara mewarisi utas) untuk menghasilkan objek utas, kita perlu mengganti metode run () karena metode run () dari kelas utas tidak melakukan apa pun pada saat ini.
Saat menggunakan metode kedua (cara untuk mengimplementasikan antarmuka runnable) untuk menghasilkan objek utas, kita perlu mengimplementasikan metode run () dari antarmuka runnable, dan kemudian menggunakan utas baru (myrunnableClass ()) untuk menghasilkan objek utas (myrunnableClass telah menerapkan runnable) pada saat ini, metode run () dari objek utas akan memanggil metode run () dari myrunnableClass.
Hentikan benang
Runtuhnya utas tidak dapat dilakukan dengan memanggil perintah stop (), tetapi biarkan metode run () berakhir secara alami. Metode stop () tidak aman dan telah ditinggalkan.
Cara yang Disarankan untuk Menghentikan Utas: Variabel Bendera, yang merupakan loop dalam metode run ().
Seperti yang ditunjukkan dalam contoh kode:
Public ControlThreadtest {MyThreadClass R = MyThreadClass baru (); MyThreadClass Runnable {Private Boolean Flag = True;
Siklus hidup utas dan siklus hidup utas prioritas
Thread Life Cycle: Proses dari penciptaan hingga kematian utas.
Gambar berikut menunjukkan berbagai negara dalam siklus hidup utas:
Siklus hidup utas dapat dibagi menjadi empat negara:
1. Buat status:
Ketika objek utas baru dibuat dengan operator baru, utasnya ada dalam keadaan yang dibuat.
Utas dalam keadaan yang dibuat hanyalah objek utas kosong dan sistem tidak mengalokasikan sumber daya untuk itu.
2. Status yang dapat dijalankan:
Metode start () dari utas eksekusi akan mengalokasikan sumber daya sistem yang diperlukan ke utas, mengatur operasinya, dan memanggil metode thread body - run (), sehingga utasnya dalam keadaan runnable (runnable).
Keadaan ini bukan keadaan berjalan, karena utas mungkin tidak benar -benar berjalan.
3. Tidak menjalankan status:
Ketika peristiwa berikut terjadi, utas dalam keadaan berjalan akan ditransfer ke keadaan yang tidak dapat dilewati:
Metode tidur () dipanggil;
Utas memanggil metode tunggu () untuk menunggu kondisi spesifik dipenuhi;
Input/pemblokiran output utas.
Kembali ke keadaan runnable:
Utas dalam keadaan tidur telah berlalu setelah waktu yang ditentukan;
Jika utas sedang menunggu kondisi tertentu, objek lain harus memberi tahu kondisi kondisi utas menunggu melalui metode notify () atau notifyall ();
Jika utas diblokir karena input dan output, tunggu input dan output selesai.
4. Status Kematian:
Saat metode utas menjalankan () dieksekusi, utasnya mati secara alami.
Prioritas utas
1. Prioritas dan pengaturan utas
Prioritas utas adalah untuk memfasilitasi penjadwalan thread sistem di lingkungan multi-threaded, dan utas dengan prioritas tinggi akan dieksekusi terlebih dahulu.
Pengaturan prioritas utas mengikuti prinsip -prinsip berikut:
Saat utas dibuat, anak mewarisi prioritas orang tua.
Setelah utas dibuat, prioritas dapat diubah dengan memanggil metode SetPriority ().
Prioritas utas adalah bilangan bulat positif antara 1-10.
1- min_priority
10-max_priority
5-norm_priority
Jika tidak ada yang ditetapkan, nilai default adalah 5.
Namun, prioritas utas tidak dapat ditentukan oleh urutan eksekusi utas.
2. Strategi Penjadwalan Thread
Penjadwal utas memilih utas dengan prioritas tertinggi untuk dijalankan. Namun, jika hal berikut terjadi, utas diakhiri:
Metode hasil () dipanggil dalam tubuh utas, menyerahkan pekerjaan CPU.
Metode tidur () dipanggil dalam tubuh utas untuk membuat benang tertidur.
Thread diblokir karena operasi I/O.
Utas lain dengan prioritas yang lebih tinggi muncul.
Dalam sistem yang mendukung irisan waktu, irisan waktu utas habis.