Logo ms.removalsclassifieds.com

Perbezaan Antara Tidur dan Tunggu (Dengan Jadual)

Isi kandungan:

Anonim

Java mempunyai beberapa kaedah untuk menjalankan tindakan tertentu. Kaedah ialah sekumpulan kod, yang berjalan hanya apabila ia dipanggil; dan mungkin atau mungkin tidak mengembalikan hasil.

Kaedah seperti tidur dan tunggu digunakan untuk multithreading. Kedua-duanya menjeda dan menghantar utas ke dalam menunggu, tetapi mempunyai perbezaan besar dalam berfungsi.

Tidur vs Tunggu

Perbezaan antara kaedah sleep() dan wait() ialah kaedah sleep() digunakan dalam atur cara untuk menjeda pelaksanaan thread semasa untuk tempoh masa tertentu manakala kaedah wait() digunakan dalam atur cara untuk menjeda atau menggantung benang semasa sehingga kaedah tertentu digunakan.

Semasa penggunaan kaedah tidur, benang semasa tidak kehilangan pemilikan monitor. Tidur ialah kaedah statik dan merupakan sebahagian daripada urutan kelas. Selepas masa menunggu tamat, urutan kembali ke keadaan asal boleh dijalankan. Ia memastikan penggunaan CPU sepenuhnya, sambil menunggu.

Manakala kaedah wait() digunakan dalam program Java untuk memerintahkan utas semasa menunggu, sehingga utas lain tidak digunakan untuk objek itu. Benang kemudian diteruskan dengan pelaksanaan, sebaik sahaja ia memperoleh kawalan monitor. Ia bukan kaedah statik tidak seperti tidur, dan merupakan sebahagian daripada kelas objek.

Jadual Perbandingan Antara Tidur dan Tunggu

Parameter perbandingan tidur tunggu
Kelas Kaedah tidur adalah sebahagian daripada kelas benang Kaedah tunggu adalah sebahagian daripada kelas objek
Jenis kaedah Tidur adalah kaedah statik Tunggu bukan kaedah statik
Teknik memanggil Kaedah tidur boleh dipanggil dari luar konteks yang disegerakkan Kaedah tunggu boleh dipanggil hanya dari konteks yang disegerakkan
Keluarkan kunci Kaedah tidur tidak melepaskan kunci pada objek, untuk tamat masa yang ditentukan, semasa penyegerakan Kaedah tunggu melepaskan kunci pada objek, untuk mempunyai peluang untuk melaksanakan, semasa penyegerakan
Pengisytiharan tidur kosong statik awam() menunggu kekosongan akhir awam ()

Apa itu Tidur?

Tidur benang() ialah kaedah statik dalam program Java yang menggantung benang semasa dan meletakkannya dalam keadaan menunggu untuk tempoh masa yang ditetapkan. Setelah keadaan menunggu dan masa tamat, keadaan benang ditukar kepada keadaan boleh jalan. Dan kemudian menunggu CPU untuk pelaksanaan selanjutnya.

Matlamat kaedah ini adalah untuk membuat kelewatan selama beberapa saat dalam program dan pada masa yang sama mempunyai penggunaan maksimum CPU. Jika sistem sibuk atau terlebih beban maka masa tunggu atau jeda adalah lebih banyak dan sebaliknya ia akan menjadi kurang atau sama dengan masa sebenar.

Jenis kaedah tidur kembali boleh dikatakan batal, kerana ia tidak mengembalikan sebarang nilai. Benang tidur tidak kehilangan monitor atau mengunci benang yang telah diperolehnya. Jika dalam apa jua keadaan tidur terganggu, benang akan membuang Interrupted_Exception. Tempoh sebenar benang akan tidur biasanya bergantung pada penjadual dan pemasa sistem yang merupakan sebahagian daripada sistem pengendalian.

Sintaks kaedah tidur ialah – tidur kosong statik awam (milisaat panjang)

tidur kosong statik awam (milisaat panjang, int nanosaat)

Di sini milisaat dan nanosaat ialah masa yang benang akan tidur.

Apa itu Tunggu?

Wait() ialah kaedah yang digunakan untuk komunikasi antara benang. Setiap kali utas wait() digunakan, panggilan atau utas semasa dijeda dan digantung, sehingga kaedah seperti notify() atau notifyAll() digunakan dalam sistem.

kaedah notify() akan membangunkan utas tertentu manakala notifyAll() boleh digunakan untuk setiap utas. Apabila disegerakkan, kaedah tunggu menyerahkan kunci kepada sumber. Tiada nilai pulangan bagi kaedah Tunggu, oleh itu boleh dikatakan ia mengembalikan batal.

Dua pengecualian kaedah Tunggu ialah Interrupted_Exception (apabila utas semasa terganggu semasa tidurnya) dan IllegalMonitorStateException (apabila utas semasa bukan pemilik objek pada monitor).

Kaedah Tunggu adalah sebahagian daripada kelas objek. Kaedah ini hanya terpakai dan boleh dipanggil melalui blok yang disegerakkan. Kaedah tunggu menetapkan skrin yang digantung atau dikunci percuma, semasa penyegerakan. Dan kaedah Tunggu secara eksklusif membenarkan berbilang benang yang disegerakkan untuk mengakses objek yang sama satu demi satu.

Sintaks kaedah Tunggu ialah – public final void wait()

Perbezaan Utama Antara Tidur dan Tunggu

Kesimpulan

Kaedah Tidur dan Tunggu ialah kaedah asli Java. Dan kedua-duanya digunakan secara meluas untuk menjadikan urutan semasa yang sedang berjalan ke dalam keadaan tidak boleh dijalankan. Kedua-dua kaedah digunakan untuk multithreading dalam program.

Kaedah tidur menyediakan pilihan eksklusif untuk mengunci skrin untuk tempoh masa tertentu yang biasanya berlangsung dari nanosaat hingga milisaat. Tetapi kaedah tunggu mengunci atau menggantung skrin sehingga kaedah lain digunakan, dengan itu tempoh masa tidak kekal khusus seperti semasa penggunaan kaedah tidur.

Mereka membezakan antara satu sama lain dari segi fungsi tertentu seperti kelas, kaedah, penyegerakan dan tempoh penahanan dan pelepasan kunci serta beberapa parameter lain. Selalunya pengaturcara keliru tentang kaedah mana yang sesuai untuk tidur benang. Penggunaan kaedah bergantung pada keperluan seperti keperluan, kesegeraan dan tempoh masa thread semasa.

Perbezaan Antara Tidur dan Tunggu (Dengan Jadual)