Direkomendasikan, 2024

Pilihan Editor

Perbedaan Antara Metode sleep () dan wait () di Jawa

Metode tidur dan menunggu terdengar seperti melakukan tugas yang sama, tetapi mereka jauh berbeda satu sama lain. Metode Sleep milik kelas Thread, dan metode menunggu milik kelas Object. Perbedaan paling penting yang membedakan keduanya adalah, metode tidur menahan kunci pada objek sampai terputus atau menyelesaikan eksekusi. Di sisi lain, metode menunggu melepaskan kunci pada objek untuk membiarkan objek lain mengeksekusi sampai dilanjutkan oleh metode notify. Ada beberapa perbedaan antara metode tidur dan menunggu; Anda dapat menjelajahinya dalam tabel perbandingan yang ditunjukkan di bawah ini.

Grafik perbandingan

Dasar untuk PerbandingantidurTunggu
DasarMetode tidur tidak melepaskan kunci pada suatu objek sampai terganggu.Metode menunggu melepaskan kunci pada objek untuk membiarkan objek lain mengeksekusi sampai memberitahukan atau memberitahukan semua metode dipanggil.
KelasMetode tidur didefinisikan dalam kelas Thread.Metode menunggu didefinisikan dalam kelas Object.
DisinkronkanMetode tidur tidak perlu dipanggil dalam konteks Sinkronisasi.Metode tunggu harus dipanggil dalam konteks Sinkronisasi.
PenyelesaianEksekusi metode tidur selesai ketika utas menyela atau waktu metode tidur berakhir.Eksekusi metode tunggu selesai ketika metode notify () atau notifyAll () menghentikannya.
StatisMetode tidur adalah metode statis.Metode menunggu tidak statis itu sebabnya perlu objek untuk memintanya.
EksekusiMetode tidur dijalankan pada utas saat ini.Metode menunggu dieksekusi pada objek.
PengecualianInterruptedExceptionIllegalArgumentException, IllegalMonitorStateException, InterruptedException.

Definisi Metode Tidur

Metode tidur adalah metode statis dari kelas Thread . Metode tidur dipanggil ketika utas tidak ingin melakukan tugas apa pun untuk jangka waktu tertentu. Metode sleep menyelesaikan eksekusinya baik ketika waktu metode berakhir, atau terganggu oleh beberapa utas lainnya dalam eksekusi. Setelah metode tidur selesai, utas lagi mendapatkan status yang bisa dijalankan. Ada dua dari metode tidur seperti yang ditunjukkan di bawah ini.

 public void public static (lama milidetik); public static void sleep (milidetik panjang dan int nanodetik); 

Dalam dua bentuk di atas, Anda dapat mengamati waktu disebutkan dalam kedua bentuk metode tidur. Ini karena utas selalu tertidur untuk waktu tertentu yang disebutkan dalam parameter. Metode tidur dapat terganggu oleh utas lain selama pelaksanaannya; karenanya, ia dapat membuang InterruptedExecption. Anda harus berhati-hati bahwa pengecualian ditangani dengan mencoba / menangkap blok atau dengan kata kunci Melempar sebaliknya, itu akan menyebabkan kesalahan waktu kompilasi. Metode tidur memegang kunci pada objek saat ini dalam eksekusi dan tidak mengizinkan objek lain untuk mengeksekusi sampai selesai eksekusi.

Definisi Metode Tunggu

Tunggu adalah metode yang didefinisikan dalam kelas Object . Metode menunggu digunakan ketika beberapa tugas (utas) berjuang untuk sumber daya yang sama satu per satu. Metode menunggu ketika dipanggil melepaskan kunci pada objek yang memanggil metode menunggu. Dan berikan kesempatan kepada objek lain untuk dieksekusi sampai metode notifikasi dipanggil yang selanjutnya melanjutkan kunci pada objek yang dirilis oleh metode tunggu. Metode menunggu memiliki formulir berikut.

 Tunggu(); tunggu (milidetik lama); tunggu (milidetik panjang, int nanodetik); 

Seperti dalam tiga bentuk metode tunggu di atas, metode pertama tidak memiliki parameter waktu, artinya eksekusi metode tunggu akan berlanjut hingga pemberitahuan, atau beri tahu semua metode tidak dipanggil. Dua metode lainnya memiliki parameter waktu. Jadi mereka akan mengeksekusi sampai waktu berakhir atau sampai memberitahukan atau metode noitfyAll dipanggil lebih awal dari waktu berakhir. Metode menunggu dapat melempar pengecualian. IllegalArgumentException, jika argumen waktu yang dilewati adalah negatif. IllegalMonitorStateException, jika utas saat ini tidak menggunakan sumber daya. InterruptedException, jika metode menunggu terganggu.

Perbedaan Kunci Antara Metode Tidur dan Menunggu di Jawa

  1. Poin utama yang membedakan metode tidur dan menunggu adalah bahwa metode tidur menahan kunci pada objek sampai terganggu atau waktunya habis. Namun, metode menunggu melepaskan kunci pada objek yang memanggilnya dan memberikan objek lain kesempatan untuk mengeksekusi.
  2. Metode sleep didefinisikan dalam kelas Thread sedangkan, metode menunggu didefinisikan dalam kelas Object .
  3. Metode tidur tidak perlu dipanggil dari konteks yang disinkronkan. Tetapi metode tunggu perlu dipanggil dari disinkronkan.
  4. Metode tidur dibangunkan jika waktu metode ini kedaluwarsa atau terputus oleh utas lainnya. Metode menunggu dibangunkan
    ketika metode notify atau notify All dipanggil.
  5. Metode tidur adalah metode statis sedangkan, metode menunggu bukan metode statis .
  6. Metode sleep dieksekusi pada utas saat ini sedangkan, metode menunggu dieksekusi pada objek yang memanggilnya.
  7. Pengecualian yang dilemparkan oleh metode tidur adalah InterruptedException sedangkan pengecualian dari metode menunggu adalah IllegalArgumentException, IllegalMonitorStateException, InterruptedException .

Kesimpulan:

Ketika beberapa utas ingin menggunakan sumber yang sama satu per satu, maka metode tunggu harus digunakan. Ketika utas tidak ingin melakukan tugas apa pun, maka metode tidur harus digunakan.

Top