Perbedaan Kunci - sleep vs wait di Java
Tidur dan tunggu adalah dua metode yang digunakan untuk multithreading di Java. Metode tidur milik kelas Thread sedangkan metode menunggu dari kelas Object. Perbedaan utama antara sleep dan wait di Java adalah, sleep digunakan untuk menangguhkan eksekusi thread saat ini selama jumlah milidetik yang ditentukan sementara metode tunggu digunakan untuk menyebabkan thread saat ini menunggu hingga thread lain memanggil notify atau notifyAll untuk objek tersebut.
Utas adalah unit pemrosesan terkecil dalam sistem operasi. Ini adalah aliran kontrol sekuensial tunggal dalam suatu program. Benangnya ringan. Multithreading adalah mekanisme menjalankan beberapa utas secara bersamaan. Bahasa pemrograman seperti Java mendukung multithreading. Multithreading memiliki keunggulan karena memungkinkan untuk menjalankan banyak utas secara bersamaan dan utas tidak tergantung satu sama lain. Ada beberapa metode di Java yang dapat digunakan untuk multithreading. Dua dari mereka sedang tidur dan menunggu.
ISI
1. Gambaran Umum dan Perbedaan Utama
2. Apa itu tidur di Jawa
3. Apa itu menunggu di Jawa
4. Persamaan Antara tidur dan menunggu di Jawa
5. Perbandingan Berdampingan - tidur vs menunggu di Jawa dalam Bentuk Tabular
6. Ringkasan
Apa itu tidur di Jawa?
Ada beberapa proses yang berjalan di sistem operasi. Proses adalah program yang sedang dieksekusi. Setiap proses dapat memiliki beberapa utas, dan ada peralihan konteks yang terjadi di antara utas ini. Di Java, ada dua cara untuk membuat utas. Yaitu dengan memperluas kelas utas atau dengan mengimplementasikan antarmuka Runnable. Kelas Thread memiliki konstruktor dan metode untuk membuat dan melakukan operasi pada thread. Kelas Thread memperluas kelas Object dan mengimplementasikan antarmuka Runnable. Antarmuka Runnable harus diimplementasikan oleh semua kelas yang instansinya dimaksudkan untuk dijalankan oleh sebuah thread. Ketika utas dijalankan, kode yang harus dijalankan ditulis di dalam metode run. Utas yang harus dijalankan dipilih oleh penjadwal utas. Hanya satu utas yang berjalan dalam satu proses.
Sebuah utas melewati beberapa fase. Setelah membuat objek kelas Thread, pemrogram dapat menjalankan metode start. Sebelum menjalankan metode itu, utas dikatakan berada dalam status baru. Penjadwal utas memilih utas untuk dijalankan. Jika utas belum dipilih oleh penjadwal utas tetapi jika metode mulai dipanggil, utas berada dalam status yang dapat dijalankan. Setelah penjadwal utas memilih utas untuk dieksekusi, itu transit ke status berjalan. Jika utas masih hidup tetapi saat ini tidak memenuhi syarat untuk dijalankan, maka utas dalam keadaan tidak dapat dijalankan atau diblokir. Setelah menyelesaikan metode jalankan, utas masuk ke status dihentikan. Itu adalah fase utama siklus hidup utas.
Ada berbagai metode yang tersedia di kelas thread untuk melakukan tugas yang berbeda. Metode tidur digunakan untuk metode tidur selama jangka waktu tertentu. Sintaks untuk metode sleep adalah public void sleep (milidetik panjang) menampilkan InterruptedException. Ini menyebabkan utas yang sedang dieksekusi menghentikan sementara eksekusi selama jumlah milidetik tertentu. Jika utas lain menyela utas saat ini, status terputus utas saat ini dihapus ketika pengecualian ini dilemparkan.
Gambar 01: Program Java dengan Metode Tidur
Menurut program di atas, metode run berisi kode yang harus dijalankan. Dalam program utama, dua objek dari ExampleThread1 dibuat, dan metode mulai dipanggil padanya. Itu akan memungkinkan untuk menjalankan kode di dalam metode run. Hanya satu utas yang dijalankan dalam satu waktu. Dengan Thread. tidur (1000); akan memungkinkan utas pertama menghentikan eksekusi selama 1000 milidetik. Saat utas tertidur, penjadwal utas mengambil utas lainnya.
Tunggu apa di Jawa?
Beberapa utas mungkin mengakses sumber daya bersama. Ini dapat menyebabkan hasil yang salah. Sinkronisasi utas dapat digunakan untuk membuat hanya satu utas untuk mengakses sumber daya bersama. Asumsikan situasi sebagai berikut. Jika, ada dua utas sebagai t1 dan t2, t1 mulai menyimpan nilai ke file teks bernama Text1.txt. Nilai-nilai tersebut akan digunakan untuk beberapa perhitungan lain saat t1 kembali. Jika t2 dimulai sebelum t1 kembali, t2 dapat mengubah nilai yang disimpan oleh t1. Hal ini dapat menyebabkan t1 memberikan keluaran yang salah. Dengan bantuan sinkronisasi, ketika t1 mulai menggunakan file Text1.txt, file tersebut dapat dikunci, sehingga hanya dapat diakses oleh t1. T2 tidak dapat mengubahnya hingga t1 melepaskan kunci untuk mengakses file teks tersebut. Saat tugas selesai, T1 dapat membuka kunci. Kunci tersebut juga dikenal sebagai monitor.
Sinkronisasi benang dapat dicapai dengan komunikasi antar utas. Bagian penting adalah segmen kode yang mengakses sumber daya bersama. Dalam komunikasi antar-utas, utas dijeda berjalan di bagian kritisnya, dan utas lain diizinkan masuk di bagian kritis yang sama untuk dieksekusi. Ini diimplementasikan menggunakan metode wait, notify dan notifyAll. Mereka termasuk dalam kelas Object. Metode menunggu digunakan untuk mengizinkan thread saat ini melepaskan kunci dan menunggu hingga thread lain memanggil metode notify atau notifyAll untuk objek tersebut. Metode notify digunakan untuk mengaktifkan satu utas yang menunggu kunci. NotifyAll membangunkan semua utas yang menunggu di kunci.
Gambar 02: Kelas Kalkulator
Gambar 03: Metode Utama
Kelas Kalkulator memperluas Thread. Blok tersinkronisasi ada di dalam metode run. Metode for loop dan notify ada di dalam blok tersinkronisasi. Di dalam metode utama, instance utas dibuat dan metode mulai dipanggil pada instance itu. Metode utama akan menunggu hingga utas memberikan pemberitahuan. Saat menjalankan program, metode utama menunggu hingga seluruh eksekusi metode run dan menunggu metode notify. Setelah metode notify dipanggil, metode utama berhenti menunggu dan mulai mengeksekusi kode lainnya. Utama menunggu hingga utas Kalkulator selesai. Akhirnya, hasil penjumlahan dicetak.
Jika tidak ada blok yang disinkronkan dan jika metode utama memiliki kode seperti di bawah ini, itu akan memberikan keluaran sebagai nol karena tidak menunggu utas lainnya selesai.
Kalkulator t1 = Kalkulator baru ();
t1. Mulailah ();
System.out.println (t1.sum);
Apa Persamaan Antara Tidur dan Menunggu di Jawa?
Baik sleep dan wait adalah metode yang dapat digunakan saat mengimplementasikan multithreading di Java
Apa Perbedaan Antara Sleep dan Wait di Jawa?
Artikel Diff Tengah sebelum Tabel
tidur vs menunggu di Jawa |
|
Metode tidur menyebabkan utas saat ini menangguhkan eksekusi selama jumlah milidetik yang ditentukan, sesuai dengan ketepatan dan akurasi pengatur waktu dan penjadwal sistem. | Metode menunggu menyebabkan utas saat ini menunggu hingga utas lain memanggil metode notify atau notifyAll untuk objek tersebut. |
Asosiasi dengan Lock | |
Metode tidur tidak melepaskan kunci pada objek selama sinkronisasi. | Metode menunggu melepaskan kunci selama sinkronisasi. |
Metode Eksekusi | |
Metode tidur dijalankan pada utas saat ini. | Metode menunggu dipanggil pada objek. |
Kelas Terkait | |
Tidur adalah metode kelas Thread. | Menunggu adalah metode kelas Object. |
Penyelesaian | |
Proses tidur selesai setelah jumlah waktu yang ditentukan selesai. | Metode menunggu diinterupsi dengan memanggil metode notify atau notifyAll. |
Ringkasan - tidur vs menunggu di Jawa
Ada beberapa proses yang berjalan di sistem operasi. Setiap proses dapat memiliki banyak utas. Utas adalah unit pemrosesan terkecil dalam sistem operasi. Bahasa pemrograman Java mendukung multithreading. Ini memungkinkan menjalankan beberapa utas secara bersamaan. Tidur dan menunggu adalah dua metode yang dapat digunakan saat mengimplementasikan multi-threading. Perbedaan antara sleep dan wait di Java adalah, sleep digunakan untuk menangguhkan eksekusi thread saat ini selama jumlah milidetik yang ditentukan sementara metode tunggu digunakan untuk menyebabkan thread saat ini menunggu hingga thread lain memanggil notify atau notifyAll metode untuk objek.