Sesuatu proses boleh mengandungi beberapa utas adalah komponen proses tersebut. Benang mempunyai tindanan peribadi, pembilang program dan pembolehubah setempat, tetapi tidak boleh memiliki sumber sistem. Ia berkongsi semua sumber proses dengan urutan lain proses induk.
Benang boleh menyelesaikan tugasan tertentu. Mereka boleh berkongsi pembolehubah yang dikongsi dan sebahagian daripada persekitaran proses induk dengan urutan lain, dan bekerjasama antara satu sama lain untuk menyelesaikan tugas.
Benang berjalan secara bebas dan tidak tahu sama ada terdapat rangkaian lain dalam proses.
Pelaksanaan utas adalah preemptif, iaitu, utas yang sedang dilaksanakan boleh digantung pada bila-bila masa untuk menjalankan urutan lain.
Sebuah utas boleh mencipta atau memusnahkan utas lain dan berbilang utas dalam satu proses boleh dilaksanakan serentak.
Java menggunakan kelas Thread untuk mewakili utas Semua objek utas mestilah contoh Thread atau subkelasnya Peranan setiap utas adalah untuk menyelesaikan tugasan tertentu . , sebenarnya, ia adalah untuk melaksanakan aliran program (sekeping kod yang dilaksanakan secara berurutan)
Langkah:
1 Tentukan subkelas kelas Thread dan ganti kaedah Run kelas Isi kaedah kaedah run mewakili tugasan yang perlu diselesaikan oleh thread
2. Cipta contoh kelas Thread, iaitu, cipta objek Thread
3 Panggil kaedah permulaan thread untuk memulakan thread
Kesimpulan: Jika anda menggunakan Thread yang diwarisi Untuk mencipta kelas thread sebagai subkelas kelas, berbilang thread tidak boleh berkongsi pembolehubah instance kelas thread, seperti pembolehubah i
1: Tentukan kelas pelaksanaan antara muka Runnable dan tulis semula kaedah Runnya juga merupakan badan pelaksanaan thread !
2: Buat contoh kelas pelaksanaan Runnable, dan gunakan tika ini sebagai sasaran Thread untuk mencipta objek Thread ini ialah objek thread sebenar.
3: Panggil kaedah mula untuk memulakan utas
Kesimpulan: Mencipta berbilang utas menggunakan antara muka Ruunable boleh Kongsi pembolehubah contoh kelas utas Ini kerana dengan cara ini, objek Runnable yang dicipta oleh program hanyalah sasaran utas dan berbilang utas boleh berkongsi sasaran, jadi berbilang utas boleh berkongsi pembolehubah contoh
Melaksanakan multithreading melalui Runnable sebenarnya adalah pembungkusan dijalankan ke dalam badan pelaksanaan thread, tetapi pada masa ini Java tidak boleh membungkus sebarang kaedah ke dalam badan pelaksanaan thread
Bermula dari Java 5, Java menyediakan antara muka Boleh Dipanggil menyediakan kaedah panggilan() yang boleh digunakan sebagai badan pelaksanaan benang Ia kelihatan sangat serupa dengan Runnable, tetapi panggilan(. ) kaedah lebih berkuasa—— Kaedah panggilan() boleh mempunyai nilai pulangan dan kaedah panggilan() boleh membuang pengecualian
Java5 menyediakan antara muka Masa Depan untuk mewakili panggilan nilai pulangan kaedah Antara muka Boleh Dipanggil ( ) dan menyediakan kelas pelaksanaan FutureTask untuk antara muka Masa Depan, yang melaksanakan antara muka Masa Depan dan juga melaksanakan antara muka Runnable - yang boleh digunakan sebagai sasaran Thread .
Langkah pelaksanaan:
1: Buat kelas pelaksanaan antara muka Boleh Panggil dan laksanakan kaedah panggilan akan menjadi badan pelaksanaan benang dan kaedah panggilan mempunyai nilai pulangan. Apabila mencipta antara muka boleh dipanggil Laksanakan kelas!
2: Gunakan kelas FutureTask untuk membalut objek Boleh Panggil FutureTask membungkus nilai pulangan kaedah panggilan kelas Boleh Panggil
3: Gunakan objek FutureTask sebagai sasaran Thread untuk mencipta dan memulakan rangkaian baharu!
4: Gunakan kaedah get FutureTask untuk mendapatkan nilai pulangan selepas pelaksanaan
Kesimpulan: Ambil Runnable dan Boleh Dipanggil Kelebihannya ialah - kelas benang hanya melaksanakan antara muka Runnable atau Boleh Dipanggil, dan juga boleh mewarisi kelas lain dalam kaedah ini, berbilang benang boleh berkongsi objek sasaran, jadi ia sangat sesuai untuk berbilang benang yang sama untuk memproses sumber yang sama; situasi . Kelemahannya ialah kerumitan pengaturcaraan lebih tinggi sedikit.
Atas ialah kandungan terperinci Apakah ciri dan penggunaan benang dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!