Perbedaan Antara Tidur dan Menunggu (Dengan Meja)

Java has several methods to carry out certain actions. Method is a group of code, which runs only when it is called; and may or may not return a result.

Metode seperti sleep dan wait digunakan untuk multithreading. Keduanya berhenti dan mengirim utas ke menunggu, tetapi memiliki perbedaan besar dalam fungsi.

Tidur vs Tunggu

Perbedaan antara metode sleep() dan wait() adalah bahwa metode sleep() digunakan dalam program untuk menjeda eksekusi utas saat ini untuk jangka waktu tertentu sementara metode wait() digunakan dalam program untuk menjeda atau menangguhkan utas saat ini hingga metode tertentu dipanggil.

Selama penggunaan metode tidur, utas saat ini tidak kehilangan kepemilikan monitor. Sleep adalah metode statis dan merupakan bagian dari utas kelas. Setelah waktu tunggu selesai, utas kembali ke status awal yang dapat dijalankan. Ini memastikan pemanfaatan penuh CPU, sambil menunggu.

Sedangkan metode wait() digunakan dalam program Java untuk memerintahkan utas saat ini untuk menunggu, hingga utas lain tidak dipanggil untuk objek itu. Utas kemudian melanjutkan dengan eksekusi, setelah mendapatkan kontrol dari monitor. Ini bukan metode statis tidak seperti tidur, dan merupakan bagian dari kelas objek.

Tabel Perbandingan Antara Tidur dan Menunggu

Parameter perbandinganTidur Tunggu
KelasMetode tidur adalah bagian dari kelas utas Metode wait adalah bagian dari kelas objek
Jenis metodeTidur adalah metode statisTunggu bukan metode statis
Teknik panggilanMetode tidur dapat dipanggil dari luar konteks yang disinkronkanMetode tunggu hanya dapat dipanggil dari konteks yang disinkronkan
Pelepas kunciMetode tidur tidak melepaskan kunci pada objek, untuk batas waktu yang ditentukan, selama sinkronisasiMetode tunggu melepaskan kunci pada objek, untuk memiliki kesempatan untuk mengeksekusi, selama sinkronisasi
Pernyataantidur batal statis publik () tunggu kekosongan akhir publik ()

Apa itu tidur?

Thread sleep() adalah metode statis dalam program Java yang menangguhkan utas saat ini dan menempatkannya dalam status menunggu untuk jangka waktu yang ditentukan. Setelah status menunggu dan waktu selesai, kondisi utas diubah menjadi status yang dapat dijalankan. Dan kemudian menunggu CPU untuk eksekusi lebih lanjut.

Tujuan dari metode ini adalah untuk membuat penundaan selama beberapa detik dalam program dan secara bersamaan memiliki pemanfaatan CPU yang maksimal. Jika sistem sedang sibuk atau kelebihan beban maka waktu tunggu atau jeda lebih banyak dan sebaliknya akan kurang atau sama dengan waktu sebenarnya.

Metode pengembalian tipe tidur dapat dikatakan batal, karena tidak mengembalikan nilai apa pun. Utas tidur tidak kehilangan monitor atau mengunci utas yang telah diperolehnya. Jika bagaimanapun tidurnya terganggu, utas akan membuang Interrupted_Exception. Durasi sebenarnya di mana utas akan tidur biasanya tergantung pada penjadwal dan pengatur waktu sistem yang merupakan bagian dari sistem operasi.

Sintaks metode sleep adalah – public static void sleep (milidetik panjang)

public static void sleep (milidetik panjang, int nanodetik)

Di sini milidetik dan nanodetik adalah waktu di mana utas akan tidur.

Apa itu Tunggu?

Wait() adalah metode yang digunakan untuk komunikasi antar-utas. Kapan pun utas wait() digunakan, pemanggilan atau utas saat ini dijeda dan ditangguhkan, hingga metode seperti notify() atau notifyAll() dipanggil dalam sistem.

notify() metode akan membangunkan utas yang ditentukan sementara notifyAll() berlaku untuk setiap utas. Saat disinkronkan, metode wait menyerahkan kunci ke sumber daya. Tidak ada nilai kembalian dari metode Wait, maka dapat dikatakan bahwa ia mengembalikan void.

Dua pengecualian dari metode Tunggu adalah Interrupted_Exception (ketika utas saat ini terputus selama tidurnya) dan IllegalMonitorStateException (bila utas saat ini bukan pemilik objek di monitor).

Metode Tunggu adalah bagian dari kelas objek. Metode ini hanya berlaku dan dapat dipanggil melalui blok yang disinkronkan. Metode tunggu membebaskan layar yang ditangguhkan atau dikunci, selama sinkronisasi. Dan metode Tunggu secara eksklusif memungkinkan beberapa utas yang disinkronkan untuk mengakses objek yang sama satu per satu.

Sintaks dari metode Wait adalah – public final void wait()

Perbedaan Utama Antara Tidur dan Menunggu

  1. Metode Sleep menyebabkan utas tidur selama jangka waktu tertentu dan tertentu biasanya untuk batas waktu yang ditentukan kecuali kedaluwarsa atau terputus sementara metode Tunggu menyebabkan utas tidur hingga metode seperti notify() atau notifyAll() dipanggil.
  2. Metode Sleep dijalankan pada utas sementara metode Wait dijalankan pada objek.
  3. Metode Sleep digunakan untuk sinkronisasi waktu sedangkan metode Wait digunakan untuk sinkronisasi multi-utas.
  4. Selama utas Tunggu, beberapa utas yang disinkronkan dapat mengakses objek yang sama secara berdekatan saat di utas Tidur, beberapa utas yang disinkronkan harus menunggu hingga tidur utas saat ini selesai.
  5. Metode Tunggu membebaskan kunci atau monitor, sedangkan metode Tidur tidak membebaskan monitor selama tidur atau menunggu utas saat ini.

Kesimpulan

Metode Sleep and Wait adalah metode asli Java. Dan keduanya banyak digunakan untuk membuat utas yang sedang berlangsung saat ini masuk ke kondisi tidak dapat dijalankan. Kedua metode tersebut digunakan untuk multithreading dalam program.

Metode tidur menyediakan opsi eksklusif untuk mengunci layar untuk durasi waktu tertentu yang biasanya berlangsung dari nanodetik hingga milidetik. Tetapi metode wait mengunci atau menangguhkan layar hingga metode lain dipanggil, sehingga durasi waktu tidak tetap spesifik seperti selama penggunaan metode sleep.

Mereka membedakan satu sama lain dalam hal fungsi tertentu seperti kelas, metode, sinkronisasi dan durasi penguncian dan pelepasan dan beberapa parameter lainnya. Seringkali pemrogram bingung tentang metode mana yang ideal untuk tidur utas. Penggunaan metode tergantung pada persyaratan seperti kebutuhan, urgensi, dan periode waktu dari utas saat ini.

Referensi

  1. https://pdfs.semanticscholar.org/51fd/24ae444910fd39b117bb3044a12591f038fa.pdf
  2. https://dl.acm.org/doi/pdf/10.1145/289524.289572
x
2D vs 3D