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: SAINS TINGKATAN 2 | Teacher Farid (25 JUN 2020) 2024, Mungkin
Anonim

Perbezaan Utama - tidur vs menunggu di Jawa

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

Benang adalah unit pemprosesan terkecil dalam sistem operasi. Ini adalah aliran kawalan berurutan tunggal dalam program. Benang ringan. Multithreading adalah mekanisme menjalankan beberapa utas pada masa yang sama. Bahasa pengaturcaraan seperti Java menyokong multithreading. Multithreading mempunyai kelebihan kerana memungkinkan untuk menjalankan beberapa utas secara serentak dan utasnya saling bergantung antara satu sama lain. Terdapat kaedah di Java yang dapat digunakan untuk multithreading. Dua daripadanya adalah tidur dan menunggu.

KANDUNGAN

1. Gambaran Keseluruhan dan Perbezaan Utama

2. Apa itu tidur di Jawa

3. Apa tunggu di Jawa

4. Persamaan Antara tidur dan tunggu di Jawa

5. Perbandingan Berdampingan - tidur vs tunggu di Jawa dalam Tingkatan Jadual

6. Ringkasan

Apakah tidur di Jawa?

Terdapat banyak proses yang dijalankan dalam sistem operasi. Proses adalah program dalam pelaksanaan. Setiap proses boleh mempunyai banyak utas, dan ada pertukaran konteks berlaku di antara utas ini. Di Jawa, ada dua cara untuk membuat utas. Iaitu dengan memperluas kelas utas atau dengan melaksanakan antara muka Runnable. Kelas Thread mempunyai konstruktor dan kaedah untuk membuat dan menjalankan operasi pada utas. Kelas Thread meluaskan kelas Objek dan menerapkan antara muka Runnable. Antara muka Runnable harus dilaksanakan oleh mana-mana kelas yang contohnya ingin dijalankan oleh utas. Apabila utas dijalankan, kod yang harus dilaksanakan ditulis dalam kaedah jalankan. Benang yang harus dijalankan dipilih oleh penjadual utas. Hanya satu utas berjalan dalam satu proses.

Satu utas melalui beberapa fasa. Setelah membuat objek kelas Thread, pengaturcara dapat menggunakan kaedah mula. Sebelum menggunakan kaedah itu, utas dikatakan berada dalam keadaan baru. Penjadual utas memilih utas untuk dijalankan. Sekiranya utas belum dipilih oleh penjadual utas tetapi jika kaedah permulaan digunakan, maka utas dalam keadaan dapat dijalankan. Setelah penjadual utas memilih utas yang akan dijalankan, ia beralih ke keadaan berjalan. Sekiranya utas masih hidup tetapi tidak layak untuk dijalankan, maka ia dalam keadaan tidak dapat dijalankan atau disekat. Setelah selesai menjalankan kaedah, utas menuju ke keadaan ditamatkan. Itu adalah fasa utama kitaran hidup utas.

Terdapat pelbagai kaedah yang terdapat di kelas utas untuk melaksanakan tugas yang berbeza. Kaedah tidur digunakan untuk tidur kaedah untuk jangka waktu tertentu. Sintaks untuk kaedah tidur adalah tidur kosong awam (milisaat panjang) membuang InterruptException. Ini menyebabkan utas yang sedang dijalankan menghentikan pelaksanaan sementara untuk sebilangan milisaat. Sekiranya benang lain mengganggu urutan semasa, status terputus dari utas semasa akan dihapus apabila pengecualian ini dilemparkan.

Perbezaan antara tidur dan menunggu di Jawa
Perbezaan antara tidur dan menunggu di Jawa

Gambar 01: Program Java dengan Kaedah tidur

Menurut program di atas, kaedah jalankan mengandungi kod yang harus dijalankan. Dalam program utama, dua objek ContohThread1 dibuat, dan kaedah permulaan digunakan pada mereka. Itu akan membolehkan menjalankan kod di dalam kaedah jalankan. Hanya satu utas yang dilaksanakan dalam satu masa. Dengan Benang. tidur (1000); akan membenarkan utas pertama untuk menghentikan pelaksanaan selama 1000 milisaat. Semasa utas sedang tidur, penjadual utas mengambil utas yang lain.

Apa tunggu di Java?

Beberapa utas mungkin mengakses sumber yang dikongsi. Ia boleh menghasilkan output yang salah. Penyegerakan benang dapat digunakan untuk membuat hanya satu utas untuk mengakses sumber yang dikongsi. Anggap keadaan seperti berikut. Jika, ada dua utas sebagai t1 dan t2, t1 mulakan menyimpan nilai ke fail teks yang disebut Text1.txt. Nilai-nilai tersebut akan digunakan untuk beberapa pengiraan lain ketika t1 kembali. Sekiranya t2 bermula sebelum t1 kembali, t2 dapat mengubah nilai yang disimpan oleh t1. Ini boleh menyebabkan t1 memberikan output yang salah. Dengan bantuan penyegerakan, ketika t1 mula menggunakan fail Text1.txt, fail itu dapat dikunci, sehingga dapat diakses hanya dengan t1. T2 tidak dapat mengubahnya sehingga t1 melepaskan kunci untuk mengakses fail teks itu. Apabila tugas selesai, t1 dapat melepaskan kunci. Kunci juga dikenali sebagai monitor.

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

Perbezaan antara tidur dan tunggu di Java Figure 02
Perbezaan antara tidur dan tunggu di Java Figure 02

Gambar 02: Kelas Kalkulator

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

Gambar 03: Kaedah Utama

Kelas Kalkulator memperluas Thread. Blok yang disegerakkan ada di dalam kaedah jalankan. Kaedah for loop and notify ada di dalam blok yang disegerakkan. Di dalam kaedah utama, contoh thread dibuat dan kaedah mula dipanggil pada instance tersebut. Kaedah utama akan menunggu sehingga utas memberikan pemberitahuan. Semasa menjalankan program, kaedah utama menunggu hingga keseluruhan pelaksanaan kaedah jalan dan menunggu kaedah pemberitahuan. Setelah kaedah notifikasi dipanggil, kaedah utama berhenti menunggu dan mula melaksanakan kod yang selebihnya. Utama sedang menunggu sehingga utas Kalkulator selesai. Akhirnya, hasil jumlah dicetak.

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

Kalkulator t1 = Kalkulator baru ();

t1. mulakan ();

System.out.println (t1.sum);

Apa Kesamaan antara tidur dan menunggu di Jawa?

Tidur dan menunggu adalah kaedah yang boleh digunakan ketika melaksanakan multithreading di Java

Apakah Perbezaan antara tidur dan menunggu di Jawa?

Artikel Diff Tengah sebelum Jadual

tidur vs menunggu di Jawa

Kaedah tidur menyebabkan thread semasa menangguhkan pelaksanaan untuk bilangan milisaat yang ditentukan, tertakluk kepada ketepatan dan ketepatan pemasa sistem dan penjadual. Kaedah tunggu menyebabkan utas semasa menunggu sehingga utas lain memanggil kaedah notify atau notifyAll untuk objek.
Perkaitan dengan Lock
Kaedah tidur tidak melepaskan kunci pada objek semasa penyegerakan. Kaedah menunggu melepaskan kunci semasa penyegerakan.
Kaedah Pelaksanaan
Kaedah tidur dijalankan pada utas semasa. Kaedah menunggu dipanggil pada objek.
Kelas Bersekutu
Tidur adalah kaedah kelas Thread. Penantian adalah kaedah kelas Objek.
Selesai
Proses tidur selesai setelah jumlah masa yang ditentukan selesai. Kaedah menunggu terganggu dengan memanggil kaedah notify atau notifyAll.

Ringkasan - tidur vs tunggu di Jawa

Terdapat banyak proses yang dijalankan pada sistem operasi. Setiap proses boleh mempunyai pelbagai utas. Benang adalah unit pemprosesan terkecil dalam sistem operasi. Bahasa pengaturcaraan Java menyokong multithreading. Ia membolehkan menjalankan banyak utas secara serentak. Tidur dan tunggu adalah dua kaedah yang boleh digunakan semasa melaksanakan multi-threading. Perbezaan antara tidur dan tunggu di Jawa adalah bahawa, tidur digunakan untuk menangguhkan pelaksanaan utas semasa untuk jumlah milidetik yang ditentukan sementara kaedah tunggu digunakan untuk menyebabkan utas semasa menunggu sehingga utas lain memanggil pemberitahuan atau pemberitahuan kaedah untuk objek.

Disyorkan: