
Grafik perbandingan
Dasar untuk Perbandingan | tidur | Tunggu |
---|---|---|
Dasar | Metode 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. |
Kelas | Metode tidur didefinisikan dalam kelas Thread. | Metode menunggu didefinisikan dalam kelas Object. |
Disinkronkan | Metode tidur tidak perlu dipanggil dalam konteks Sinkronisasi. | Metode tunggu harus dipanggil dalam konteks Sinkronisasi. |
Penyelesaian | Eksekusi metode tidur selesai ketika utas menyela atau waktu metode tidur berakhir. | Eksekusi metode tunggu selesai ketika metode notify () atau notifyAll () menghentikannya. |
Statis | Metode tidur adalah metode statis. | Metode menunggu tidak statis itu sebabnya perlu objek untuk memintanya. |
Eksekusi | Metode tidur dijalankan pada utas saat ini. | Metode menunggu dieksekusi pada objek. |
Pengecualian | InterruptedException | IllegalArgumentException, 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
- 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.
- Metode sleep didefinisikan dalam kelas Thread sedangkan, metode menunggu didefinisikan dalam kelas Object .
- Metode tidur tidak perlu dipanggil dari konteks yang disinkronkan. Tetapi metode tunggu perlu dipanggil dari disinkronkan.
- Metode tidur dibangunkan jika waktu metode ini kedaluwarsa atau terputus oleh utas lainnya. Metode menunggu dibangunkan
ketika metode notify atau notify All dipanggil. - Metode tidur adalah metode statis sedangkan, metode menunggu bukan metode statis .
- Metode sleep dieksekusi pada utas saat ini sedangkan, metode menunggu dieksekusi pada objek yang memanggilnya.
- 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.