Sebuah benang mengalami pelbagai fasa dalam kitaran hayat. Seperti, benang datang ke dunia, bermula, berjalan, dan selepas itu berlalu pergi. Gambar rajah seterusnya menerangkan kitaran hayat lengkap benang.
Mulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Urut ditakrifkan pada peringkat Sistem Pengendalian. Dan bahasa Java, serta semua bahasa lain, menggunakan memanfaatkan perkhidmatan yang diberikan oleh Sistem Pengendalian. Dari sudut pandangan pembangun, utas ialah satu set arahan yang akan kami tulis aplikasi kami dan laksanakan dengan cara tertentu. Aplikasi itu sendiri boleh terdiri daripada beberapa utas. Benang yang berbeza boleh dilaksanakan pada masa yang sama. JVM (Java Virtual Machine) berfungsi dengan beberapa utas. Terdapat benang untuk kutipan sampah. Terdapat urutan untuk Pengkompil Just in Time dan urutan teknikal lain.
Di bawah ialah Keadaan Kitaran Hayat Benang yang berbeza di Jawa:
1. Baharu: Urutan baharu memulakan kitaran hayatnya dalam keadaan baharu. Ia terus berada dengan keadaan ini sebelum program memulakan utas. Selain itu, ia dikenali sebagai urutan yang dicipta.
2. Runnable: Selepas benang yang baru dilahirkan boleh dimulakan, thread bertukar menjadi runnable. Urutan dengan keadaan ini dianggap melaksanakan prosesnya.
3. Menunggu: Adakalanya, urutan peralihan ke arah menunggu di sekitar negeri walaupun urutan sedang menunggu urutan lain untuk melaksanakan aktiviti. Peralihan benang kepada keadaan boleh jalan hanya jika utas tambahan menunjukkan urutan menunggu untuk terus berprestasi.
4. Menunggu Bermasa: Benang boleh jalan boleh dengan mudah masa tertentu menunggu keadaan untuk mendapatkan selang masa tertentu. Urutan dengan peralihan keadaan ini kembali kepada keadaan boleh jalan sebaik sahaja selang titik tamat tempoh atau jika acara yang benar-benar ditunggu berlaku.
5. Ditamatkan: Urutan boleh jalan masuk ke keadaan ditamatkan kerana ia menyelesaikan tugasnya atau ditamatkan.
Cara paling asas untuk mencipta benang dalam Java ialah menggunakan Corak Runnable. Pertama, anda perlu mencipta contoh antara muka Runnable, yang sangat mudah; hanya ada satu kaedah untuk dilaksanakan. Kemudian kami menyampaikan contoh ini kepada pembina kelas Thread. Dan kemudian, kami hanya memanggil kaedah mula() bagi objek utas ini yang dicipta untuk melancarkan utas baharu yang akan menjalankan tugas yang dibungkus dalam objek Runnable kami.
Maka mula-mula, kami mencipta contoh Runnable. Terdapat hanya satu kaedah untuk dilaksanakan, yang dipanggil kaedah run(). Ini ialah corak Java 7 untuk melakukan itu, dengan contoh kelas tanpa nama. Tetapi kita juga boleh menggunakan ungkapan lambda untuk melaksanakan Runnable kerana hanya terdapat satu kaedah dalam antara muka Runnable.
Mari kita buat urutan pada contoh yang sangat mudah.
Kami akan melihat apa yang boleh berlaku dengan keadaan perlumbaan iaitu dengan kod tidak segerak yang harus disegerakkan dan kami akan membetulkan kod kami menggunakan penyegerakan. Contoh pertama ini sangat mudah; ia sangat asas. Ia hanya tentang mencipta tugasan.
Output:
Tugas ialah contoh antara muka Runnable, mari kita panggil ia runnable dan kita boleh melaksanakan antara muka ini menggunakan ungkapan lambda. Tugasan ini diberikan kepada utas baharu dan dilaksanakan dalam konteks utas ini. Jadi kami hanya akan mencetak nama benang yang menjalankan tugas ini. Saya menjalankan dalam… Thread.currentThread() ialah kaedah statik kelas Thread yang mengembalikan utas menjalankan tugas semasa. Dan kita hanya perlu memanggil getName() pada objek thread ini untuk mengembalikan nama thread, kemudian selepas kita mencipta contoh Thread t = Thread baru. Melepasi runnable ini sebagai parameter. Jadi benang ini akan melaksanakan sekeping kod ini. Dan untuk melancarkannya. t.start() ini ialah kaedah start() yang perlu kita panggil. Kami juga boleh memberikan nama eksplisit untuk Thread ini menggunakan t.setName("My thread"). Dan kini kita boleh melaksanakan kod ini. Sekarang bukannya kaedah panggilan mula(), kami memanggil kaedah run() dan jika kami menjalankan kod ini, masalahnya ialah tugas itu dilaksanakan dengan betul, tetapi ia tidak dilaksanakan dalam utas yang telah kami cipta. Ia dilaksanakan dalam utas utama, iaitu utas melaksanakan kaedah utama. Jadi kaedah run() ini tidak boleh dipanggil jika kita ingin melancarkan benang baharu.
Output:
Kaedah yang diterangkan dengan hanya Thread dibentangkan dalam Jadual.
|
Nama Kaedah Benang |
||||||||||||||||||||||||
String |
Kembalikan nama urutan ini |
||||||||||||||||||||||||
int |
|
||||||||||||||||||||||||
boolean | isAlive() Menguji jika urutan ini masih berjalan | ||||||||||||||||||||||||
kosong | sertai() Tunggu thread ini mati (tamat) | ||||||||||||||||||||||||
kosong | run() Setiap kali urutan ini dibina menggunakan objek Runnable individu, yang biasanya kaedah runnable objek Runnable dipanggil, kaedah ini tidak akan melakukan apa-apa dan kembali. Apabila kelas thread boleh dilanjutkan dan kaedah run() over-ridden semasa sub-class, maka kaedah run() over-ridden dipanggil. | ||||||||||||||||||||||||
kosong | setName(Nama rentetan) Mengubah nama dengan urutan ini menjadi setanding dengan nama argumen. | ||||||||||||||||||||||||
kosong statik | tidur(millis panjang) lontaran Terganggu/Pengecualian Ia menyebabkan utas yang sedang berfungsi untuk berehat selama kuantiti milisaat yang diperlukan. |
||||||||||||||||||||||||
kosong statik | tidur(millis panjang, int Nano) melempar InterruptedException Ia menyebabkan utas yang sedang berfungsi untuk tidur (berhenti pelaksanaan) untuk kuantiti milisaat yang diperlukan serta kuantiti nano saat tertentu. | ||||||||||||||||||||||||
kosong | mula() Cetus urutan ini untuk memulakan pelaksanaan; Mesin Maya Java memanggil kaedah jalankan benang itu. | ||||||||||||||||||||||||
kosong statik | hasil() Mencetuskan objek utas pada masa ini untuk menjeda dan membenarkan urutan tambahan untuk dilaksanakan secara ringkas. | ||||||||||||||||||||||||
Benang statik | currentThread() Mengembalikan sebutan objek urutan yang sedang dilaksanakan. |
Atas ialah kandungan terperinci Kitaran hayat benang di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!