Perbezaan Antara tidur dan menunggu di Jawa

Isi kandungan:

Perbezaan Antara tidur dan menunggu di Jawa
Perbezaan Antara tidur dan menunggu di Jawa

Video: Perbezaan Antara tidur dan menunggu di Jawa

Video: Perbezaan Antara tidur dan menunggu di Jawa
Video: akibat membangunkan harimau yang sedang tidur #short #harimauvsanjing#anjingserangharimau 2024, Julai
Anonim

Perbezaan Utama – tidur vs menunggu dalam Java

Tidur dan tunggu ialah dua kaedah yang digunakan untuk multithreading dalam Java. Kaedah tidur tergolong dalam kelas Thread manakala kaedah tunggu adalah dari kelas Objek. Perbezaan utama antara tidur dan tunggu di Jawa ialah, tidur digunakan untuk menggantung pelaksanaan utas semasa untuk bilangan milisaat yang ditentukan manakala kaedah tunggu digunakan untuk menyebabkan utas semasa menunggu sehingga utas lain memanggil pemberitahuan atau notifyAll kaedah untuk objek.

Benang ialah unit pemprosesan terkecil dalam sistem pengendalian. Ia adalah satu aliran kawalan berurutan dalam program. Benang adalah ringan. Multithreading ialah mekanisme menjalankan berbilang benang pada masa yang sama. Bahasa pengaturcaraan seperti Java menyokong multithreading. Multithreading mempunyai kelebihan kerana ia membolehkan untuk menjalankan berbilang benang secara serentak dan benang adalah bebas antara satu sama lain. Terdapat kaedah dalam Java yang boleh digunakan untuk multithreading. Dua daripada mereka sedang tidur dan tunggu.

Apakah tidur di Jawa?

Terdapat pelbagai proses yang dijalankan dalam sistem pengendalian. Proses ialah program dalam pelaksanaan. Setiap proses boleh mempunyai berbilang utas, dan terdapat penukaran konteks yang berlaku antara utas ini. Di Jawa, terdapat dua cara untuk mencipta benang. Iaitu dengan memanjangkan kelas benang atau dengan melaksanakan antara muka Runnable. Kelas Thread mempunyai pembina dan kaedah untuk mencipta dan melaksanakan operasi pada benang. Kelas Thread memanjangkan kelas Objek dan melaksanakan antara muka Runnable. Antara muka Runnable harus dilaksanakan oleh mana-mana kelas yang keadaannya bertujuan untuk dilaksanakan oleh benang. Apabila utas dilaksanakan, kod yang sepatutnya dilaksanakan ditulis di dalam kaedah larian. Benang yang sepatutnya dijalankan dipilih oleh penjadual benang. Hanya satu urutan berjalan dalam satu proses.

Sebuah urutan melalui beberapa fasa. Selepas mencipta objek kelas Thread, pengaturcara boleh menggunakan kaedah mula. Sebelum menggunakan kaedah itu, benang dikatakan berada dalam keadaan baharu. Penjadual benang memilih benang untuk dijalankan. Jika benang belum dipilih oleh penjadual benang tetapi jika kaedah mula digunakan, maka benang berada dalam keadaan boleh jalan. Selepas penjadual benang memilih benang untuk dilaksanakan, ia beralih kepada keadaan berjalan. Jika urutan masih hidup tetapi tidak layak untuk dijalankan pada masa ini, maka ia berada dalam keadaan tidak boleh dijalankan atau disekat. Selepas selesai kaedah larian, benang pergi ke keadaan ditamatkan. Itu adalah fasa utama kitaran hayat benang.

Terdapat pelbagai kaedah yang tersedia dalam kelas benang untuk melaksanakan tugas yang berbeza. Kaedah tidur digunakan untuk tidur kaedah untuk jumlah masa tertentu. Sintaks untuk kaedah tidur ialah tidur kosong awam (milisaat panjang) melontar InterruptedException. Ia menyebabkan utas yang sedang melaksanakan untuk menghentikan pelaksanaan sementara untuk bilangan milisaat tertentu. Jika utas lain mengganggu utas semasa, status utas semasa yang terganggu akan dikosongkan apabila pengecualian ini dibuang.

Perbezaan Antara tidur dan menunggu di Jawa
Perbezaan Antara tidur dan menunggu di Jawa

Rajah 01: Program Java dengan Kaedah tidur

Mengikut program di atas, kaedah larian mengandungi kod yang harus dilaksanakan. Dalam program utama, dua objek ExampleThread1 dicipta, dan kaedah permulaan digunakan padanya. Itu akan membolehkan untuk menjalankan kod di dalam kaedah larian. Hanya satu utas dilaksanakan pada satu masa. Dengan Benang.tidur (1000); akan membenarkan utas pertama untuk menamatkan pelaksanaan selama 1000 milisaat. Apabila benang sedang tidur, penjadual benang mengambil urutan lain.

Apa yang ditunggu di Jawa?

Berbilang rangkaian mungkin mengakses sumber yang dikongsi. Ia boleh menyebabkan menghasilkan output yang salah. Penyegerakan benang boleh digunakan untuk membuat hanya satu utas untuk mengakses sumber yang dikongsi. Andaikan situasi seperti berikut. Jika, terdapat dua utas sebagai t1 dan t2, t1 mula menyimpan nilai ke fail teks yang dipanggil Text1.txt. Nilai tersebut akan digunakan untuk beberapa pengiraan lain apabila t1 kembali. Jika t2 bermula sebelum t1 kembali, t2 boleh menukar nilai yang disimpan oleh t1. Ini boleh menyebabkan t1 memberikan output yang salah. Dengan bantuan penyegerakan, apabila t1 mula menggunakan fail Text1.txt, fail itu boleh dikunci, jadi ia hanya boleh diakses oleh t1. T2 tidak boleh mengubahnya sehingga t1 melepaskan kunci untuk mengakses fail teks tersebut. Apabila tugas selesai, t1 boleh melepaskan kunci. Kunci juga dikenali sebagai monitor.

Penyegerakan benang boleh dicapai dengan komunikasi antara benang. Bahagian kritikal ialah segmen kod yang mengakses sumber yang dikongsi. Dalam komunikasi antara utas, utas dijeda berjalan di bahagian kritikalnya, dan utas lain dibenarkan masuk dalam bahagian kritikal yang sama untuk dilaksanakan. Ia dilaksanakan menggunakan kaedah tunggu, maklumkan dan maklumkanSemua. Mereka tergolong dalam kelas Objek. Kaedah tunggu digunakan untuk membenarkan utas semasa melepaskan kunci dan tunggu sehingga utas lain menggunakan kaedah notify atau notifyAll untuk objek. Kaedah pemberitahuan digunakan untuk membangunkan satu utas yang sedang menunggu kunci. NotifyAll membangunkan semua urutan yang menunggu di kunci.

Perbezaan Antara tidur dan tunggu dalam Java_Rajah 02
Perbezaan Antara tidur dan tunggu dalam Java_Rajah 02

Rajah 02: Kelas Kalkulator

Perbezaan Utama Antara tidur dan tunggu di Jawa
Perbezaan Utama Antara tidur dan tunggu di Jawa

Rajah 03: Kaedah Utama

Kelas Kalkulator memanjangkan Benang. Blok yang disegerakkan berada di dalam kaedah larian. Kaedah gelung untuk dan pemberitahuan berada di dalam blok yang disegerakkan. Di dalam kaedah utama, contoh benang yang dibuat dan kaedah permulaan dipanggil pada contoh itu. Kaedah utama akan menunggu sehingga benang memberikan pemberitahuan. Apabila melaksanakan program, kaedah utama menunggu sehingga keseluruhan pelaksanaan kaedah larian dan menunggu kaedah pemberitahuan. Sebaik sahaja kaedah pemberitahuan dipanggil, kaedah utama berhenti menunggu dan mula melaksanakan kod yang lain. Utama sedang menunggu sehingga utas Kalkulator selesai. Akhirnya, hasil jumlah dicetak.

Jika tiada blok yang disegerakkan dan jika kaedah utama mempunyai kod seperti di bawah, ia akan memberikan output sebagai sifar kerana ia tidak menunggu urutan lain selesai.

Kalkulator t1=Kalkulator baharu ();

t1. mulakan ();

System.out.println (t1.sum);

Apakah Persamaan Antara Tidur dan Tunggu di Jawa?

Kedua-dua tidur dan tunggu ialah kaedah yang boleh digunakan semasa melaksanakan multithreading dalam Java

Apakah Perbezaan Antara Tidur dan Tunggu di Jawa?

tidur vs menunggu di Jawa

Kaedah tidur menyebabkan utas semasa menggantung pelaksanaan untuk bilangan milisaat yang ditentukan, tertakluk kepada ketepatan dan ketepatan pemasa dan penjadual sistem. Kaedah tunggu menyebabkan utas semasa menunggu sehingga utas lain menggunakan kaedah notify atau notifyAll untuk objek.
Persatuan dengan Kunci
Kaedah tidur tidak melepaskan kunci pada objek semasa penyegerakan. Kaedah tunggu melepaskan kunci semasa penyegerakan.
Kaedah Pelaksanaan
Kaedah tidur dilaksanakan pada urutan semasa. Kaedah tunggu dipanggil pada objek.
Kelas Bersekutu
Tidur ialah kaedah kelas Thread. Penantian ialah kaedah kelas Objek.
Penyelesaian
Proses tidur selesai selepas jumlah masa yang ditetapkan tamat. Kaedah menunggu terganggu dengan menghubungi notify atau notifyAll kaedah.

Ringkasan – tidur vs menunggu dalam Java

Terdapat pelbagai proses yang dijalankan pada sistem pengendalian. Setiap proses boleh mempunyai beberapa utas. Benang ialah unit pemprosesan terkecil dalam sistem pengendalian. Bahasa pengaturcaraan Java menyokong multithreading. Ia membolehkan menjalankan berbilang benang secara serentak. Tidur dan tunggu adalah dua kaedah yang boleh digunakan apabila melaksanakan multi-threading. Perbezaan antara tidur dan tunggu di Jawa ialah, tidur digunakan untuk menggantung pelaksanaan utas semasa untuk bilangan milisaat yang ditentukan manakala kaedah tunggu digunakan untuk menyebabkan utas semasa menunggu sehingga utas lain memanggil notify atau notifyAll kaedah untuk objek.

Disyorkan: