Perbezaan antara tidur dan tunggu di java

Perbezaan antara tidur dan tunggu di java

Perbezaan utama - Tidur vs Tunggu masuk Java
 

Tidur dan tunggu adalah dua kaedah yang digunakan untuk multithreading di java. Kaedah tidur adalah milik kelas benang sementara kaedah tunggu adalah dari kelas objek. The Perbezaan utama antara tidur dan tunggu di java adalah itu, Tidur digunakan untuk menggantung pelaksanaan benang semasa untuk bilangan milisaat yang ditentukan sementara kaedah tunggu digunakan untuk menyebabkan benang semasa menunggu sehingga benang lain memanggil kaedah pemberitahuan atau pemberitahuan untuk objek tersebut.

Utas adalah unit pemprosesan terkecil dalam sistem operasi. Ia adalah satu aliran kawalan berurutan dalam program. Benang ringan. Multithreading adalah mekanisme menjalankan pelbagai benang pada masa yang sama. Bahasa pengaturcaraan seperti Java menyokong multithreading. Multithreading mempunyai kelebihan kerana ia membolehkan untuk menjalankan pelbagai benang secara serentak dan benang bebas antara satu sama lain. Terdapat kaedah di Java yang boleh digunakan untuk multithreading. Dua daripadanya tidur dan menunggu.

Kandungan

1. Gambaran Keseluruhan dan Perbezaan Utama
2. Apa itu tidur di Java
3. Apa yang Tunggu di Java
4. Persamaan antara tidur dan tunggu di java
5. Perbandingan sampingan - Tidur vs Tunggu di Java dalam bentuk jadual
6. Ringkasan

Apa itu tidur di Java?

Terdapat banyak proses yang dijalankan dalam sistem operasi. Proses adalah program dalam pelaksanaan. Setiap proses boleh mempunyai pelbagai benang, dan terdapat penukaran konteks yang berlaku di antara benang ini. Di Java, terdapat dua cara untuk membuat utas. Itu adalah dengan memperluaskan kelas benang atau dengan melaksanakan antara muka yang boleh dijalankan. Kelas Thread mempunyai pembina dan kaedah untuk membuat dan melaksanakan operasi pada benang. Kelas Thread memanjangkan kelas objek dan melaksanakan antara muka yang boleh dijalankan. Antara muka Runnable harus dilaksanakan oleh mana -mana kelas yang dimaksudkan untuk dilaksanakan oleh benang. Apabila benang dijalankan, kod yang harus dilaksanakan ditulis di dalam kaedah larian. Utas yang harus dijalankan dipilih oleh penjadual thread. Hanya satu benang yang berjalan dalam satu proses.

Benang melalui beberapa fasa. Setelah membuat objek kelas thread, pengaturcara boleh menggunakan kaedah permulaan. Sebelum menggunakan kaedah itu, benang dikatakan berada di negeri baru. Penjadual thread memilih benang untuk dijalankan. Sekiranya benang belum dipilih oleh penjadual thread tetapi jika kaedah permulaan dipanggil, maka benang itu berada dalam keadaan yang boleh dilancarkan. Selepas penjadual benang memilih benang untuk dilaksanakan, ia transit untuk menjalankan keadaan. Sekiranya benang itu hidup tetapi tidak layak untuk dijalankan, maka ia berada dalam keadaan tidak dapat dilepaskan atau disekat. Setelah selesai kaedah larian, benang pergi ke keadaan yang ditamatkan.  Itu adalah fasa utama kitaran hayat benang.

Terdapat pelbagai kaedah yang terdapat di kelas benang untuk melaksanakan tugas yang berbeza. Kaedah tidur digunakan untuk tidur kaedah untuk jangka masa tertentu. Sintaks untuk kaedah tidur adalah tidur tidak sah awam (milisaat panjang) melemparkan gantungan yang terganggu. Ia menyebabkan benang yang sedang dilaksanakan untuk menghentikan pelaksanaan sementara untuk bilangan milisaat tertentu. Sekiranya benang lain mengganggu benang semasa, status terganggu benang semasa dibersihkan apabila pengecualian ini dilemparkan.

Rajah 01: Program Java dengan kaedah tidur

Menurut program di atas, kaedah larian mengandungi kod yang harus dilaksanakan. Dalam program utama, dua objek ExampleThread1 dibuat, dan kaedah permulaan dipanggil ke atasnya. Yang membolehkan untuk menjalankan kod di dalam kaedah larian. Hanya satu benang yang dijalankan pada satu masa. Dengan benang. tidur (1000); akan membolehkan benang pertama menamatkan pelaksanaan untuk 1000 milisaat. Apabila benang sedang tidur, penjadual benang mengambil utas yang lain.

Apa yang Tunggu di Java?

Pelbagai benang mungkin mengakses sumber bersama. Ia boleh menyebabkan menghasilkan output yang salah. Penyegerakan Thread boleh digunakan untuk membuat hanya satu benang untuk mengakses sumber bersama. Menganggap keadaan seperti berikut. Jika, terdapat dua benang sebagai T1 dan T2, T1 mula menyimpan nilai ke fail teks yang dipanggil Text1.txt. Nilai -nilai tersebut akan digunakan untuk beberapa pengiraan lain apabila T1 kembali. Sekiranya T2 bermula sebelum pulangan T1, T2 dapat mengubah nilai yang disimpan oleh T1. Ini boleh menyebabkan T1 memberikan output yang salah. Dengan bantuan penyegerakan, apabila T1 mula menggunakan teks1.Fail txt, fail itu boleh dikunci, jadi hanya boleh diakses oleh T1. T2 tidak dapat mengubahnya sehingga T1 mengeluarkan kunci untuk mengakses fail teks itu. Apabila tugas selesai, T1 dapat melepaskan kunci. Kunci juga dikenali sebagai monitor.

Penyegerakan Thread dapat dicapai dengan komunikasi antara thread. Bahagian kritikal adalah segmen kod yang mengakses sumber yang dikongsi. Dalam komunikasi antara thread, benang dijeda berjalan di bahagian kritikalnya, dan benang lain dibenarkan masuk ke dalam seksyen kritikal yang sama untuk dilaksanakan. Ia dilaksanakan menggunakan kaedah tunggu, memberitahu dan memberitahu. Mereka tergolong dalam kelas objek. Kaedah tunggu digunakan untuk membolehkan benang semasa melepaskan kunci dan tunggu sehingga benang lain memanggil kaedah pemberitahuan atau pemberitahuan untuk objek tersebut. Kaedah Pemberitahuan digunakan untuk membangunkan satu benang yang sedang menunggu kunci. Pemberitahuan membangunkan semua benang yang sedang menunggu di kunci.

Rajah 02: Kelas Kalkulator

Rajah 03: Kaedah utama

Kelas kalkulator memanjangkan utas. Blok yang disegerakkan berada di dalam kaedah larian. Kaedah Loop dan Maklumkan adalah 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 memberi pemberitahuan. Semasa melaksanakan program ini, kaedah utama menunggu sehingga keseluruhan pelaksanaan kaedah larian dan menunggu kaedah pemberitahuan. Setelah kaedah pemberitahuan dipanggil, kaedah utama berhenti menunggu dan mula melaksanakan keseluruhan kod. Utama sedang menunggu sehingga benang 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 ia tidak menunggu benang lain selesai.

Kalkulator T1 = Kalkulator Baru ();

 t1. mula ();

Sistem.keluar.println (T1.jumlah);

Apakah persamaan antara tidur dan tunggu di java?

  • Kedua -dua tidur dan tunggu adalah kaedah yang boleh digunakan semasa melaksanakan multithreading di java

Apakah perbezaan antara tidur dan tunggu di java?

Tidur vs Tunggu di Jawa

Kaedah tidur menyebabkan benang semasa untuk menggantung pelaksanaan untuk bilangan milisaat yang ditentukan, tertakluk kepada ketepatan dan ketepatan pemasa sistem dan penjadual. Kaedah tunggu menyebabkan benang semasa menunggu sehingga benang lain memanggil kaedah pemberitahuan atau pemberitahuan untuk objek tersebut.
 Persatuan dengan kunci
Kaedah tidur tidak melepaskan kunci pada objek semasa penyegerakan. Kaedah tunggu mengeluarkan kunci semasa penyegerakan.
Kaedah pelaksanaan
Kaedah tidur dilaksanakan pada utas semasa. Kaedah tunggu dipanggil objek.
 Kelas yang berkaitan
Tidur adalah kaedah kelas benang. Tunggu adalah kaedah kelas objek.
Selesai
Proses tidur selesai setelah jumlah masa yang ditentukan berakhir. Kaedah tunggu terganggu dengan memanggil kaedah pemberitahuan atau pemberitahuan.

Ringkasan - Tidur vs Tunggu masuk Java

Terdapat banyak proses yang dijalankan pada sistem operasi. Setiap proses boleh mempunyai pelbagai utas. Utas adalah unit pemprosesan terkecil dalam sistem operasi. Bahasa pemrograman Java menyokong multithreading. Ia membolehkan menjalankan pelbagai utas secara serentak. Tidur dan tunggu adalah dua kaedah yang boleh digunakan semasa melaksanakan pelbagai threading. Perbezaan antara tidur dan tunggu di java ialah, tidur digunakan untuk menggantung pelaksanaan benang semasa untuk bilangan milisaat yang ditentukan sementara kaedah tunggu digunakan untuk menyebabkan benang semasa menunggu sehingga benang lain memanggil maklum atau memberitahu. kaedah untuk objek.

Rujukan:

1."Komunikasi antara thread di Java - Javatpoint.". Javatpoint. Terdapat di sini
2. Antara benang Komunikasi dalam Multithreading Java | Tutorial Java Teras | KajianTonIght. Terdapat di sini