Tidur dan menunggu adalah dua metode yang digunakan untuk multithreading di Jawa. Metode sleep milik kelas Thread sementara metode menunggu dari kelas Object. Itu perbedaan utama antara tidur dan menunggu di Jawa adalah, sleep digunakan untuk menunda eksekusi utas saat ini untuk jumlah milidetik yang ditentukan sementara metode tunggu digunakan untuk menyebabkan utas saat ini menunggu sampai utas lain memanggil metode notify atau notifyAll untuk objek tersebut.
Thread adalah unit pemrosesan terkecil dalam sistem operasi. Ini adalah aliran kontrol tunggal berurutan dalam suatu program. Utasnya ringan. Multithreading adalah mekanisme menjalankan banyak utas secara bersamaan. Bahasa pemrograman seperti Java mendukung multithreading. Multithreading memiliki kelebihan karena memungkinkan untuk menjalankan beberapa utas secara bersamaan dan utas itu independen satu sama lain. Ada metode di Jawa yang dapat digunakan untuk multithreading. Dua dari mereka tidur dan menunggu.
1. Ikhtisar dan Perbedaan Utama
2. Apa itu tidur di Jawa
3. Apa yang menunggu di Jawa
4. Kesamaan Antara tidur dan menunggu di Jawa
5. Perbandingan Berdampingan - tidur vs menunggu di Jawa dalam Bentuk Tabular
6. Ringkasan
Ada beberapa proses yang berjalan di sistem operasi. Suatu proses adalah program yang sedang dieksekusi. Setiap proses dapat memiliki beberapa utas, dan ada perpindahan konteks yang terjadi di antara utas ini. Di Jawa, 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 utas. Kelas Thread memperluas kelas Objek dan mengimplementasikan antarmuka Runnable. Antarmuka Runnable harus diimplementasikan oleh setiap kelas yang instansnya dimaksudkan untuk dieksekusi oleh utas. Ketika utas dijalankan, kode yang harus dijalankan ditulis di dalam metode jalankan. Thread yang harus dijalankan dipilih oleh scheduler thread. Hanya satu utas yang berjalan dalam satu proses.
Utas melewati beberapa fase. Setelah membuat objek kelas Thread, pemrogram dapat meminta metode mulai. Sebelum memanggil metode itu, utasnya dikatakan dalam status baru. Penjadwal thread memilih utas untuk dijalankan. Jika utas belum dipilih oleh penjadwal utas tetapi jika metode mulai dipanggil, maka utas berada dalam status runnable. Setelah penjadwal utas memilih utas untuk dieksekusi, ia mentransit ke status menjalankan. Jika utas masih hidup tetapi saat ini tidak memenuhi syarat untuk dijalankan, maka utas tidak dapat dijalankan atau diblokir. Setelah selesai menjalankan metode, utas masuk ke status dihentikan. Itu adalah fase utama dari siklus hidup utas.
Ada berbagai metode yang tersedia di kelas utas untuk melakukan tugas yang berbeda. Metode tidur digunakan untuk tidur metode untuk jumlah waktu tertentu. Sintaks untuk metode tidur adalah public void sleep (milidetik panjang) melempar InterruptedException. Itu menyebabkan utas yang saat ini mengeksekusi menghentikan eksekusi sementara untuk jumlah milidetik yang ditentukan. Jika utas lain memotong utas saat ini, status utas utas saat ini dihapus saat pengecualian ini dilemparkan.
Gambar 01: Program Java dengan Metode Tidur
Menurut program di atas, metode jalankan berisi kode yang harus dijalankan. Dalam program utama, dua objek dari SampleThread1 dibuat, dan metode awal dipanggil pada mereka. Itu akan memungkinkan untuk menjalankan kode di dalam metode run. Hanya satu utas yang dijalankan sekaligus. Dengan Thread. tidur (1000); akan memungkinkan utas pertama untuk menghentikan eksekusi selama 1000 milidetik. Ketika utas sedang tidur, penjadwal utas mengambil utas lainnya.
Beberapa utas mungkin mengakses sumber daya bersama. Itu dapat menyebabkan menghasilkan output yang salah. Sinkronisasi utas dapat digunakan untuk membuat hanya satu utas untuk mengakses sumber daya bersama. Anggap sebuah situasi sebagai berikut. Jika, ada dua utas sebagai t1 dan t2, t1 mulai menyimpan nilai ke file teks bernama Text1.txt. Nilai-nilai itu akan digunakan untuk beberapa perhitungan lain ketika t1 kembali. Jika t2 dimulai sebelum t1 kembali, t2 dapat mengubah nilai yang disimpan oleh t1. Ini dapat menyebabkan t1 memberikan output yang salah. Dengan bantuan sinkronisasi, ketika t1 mulai menggunakan file Text1.txt, file itu dapat dikunci, sehingga hanya dapat diakses oleh t1. T2 tidak dapat mengubahnya sampai t1 melepaskan kunci untuk mengakses file teks itu. Ketika tugas selesai, t1 dapat melepaskan kunci. Kunci ini juga dikenal sebagai monitor.
Sinkronisasi utas dapat dicapai dengan komunikasi antar utas. Bagian kritis 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 menunggu, beri tahu dan beri tahu semua metode. Mereka termasuk dalam kelas Object. Metode menunggu digunakan untuk memungkinkan utas saat ini melepaskan kunci dan menunggu sampai utas lain memanggil metode notify atau notifyAll untuk objek. Metode notify digunakan untuk membangunkan satu utas yang sedang menunggu kunci. NotifyAll membangunkan semua utas yang sedang menunggu kunci.
Gambar 02: Kelas Kalkulator
Gambar 03: Metode Utama
Kelas Kalkulator memperpanjang Thread. Blok yang disinkronkan ada di dalam metode jalankan. Metode for loop dan notify ada di dalam blok yang disinkronkan. Di dalam metode utama, sebuah instance dari sebuah thread dibuat dan metode start dipanggil pada instance itu. Metode utama akan menunggu sampai utas memberikan pemberitahuan. Saat menjalankan program, metode utama menunggu hingga seluruh pelaksanaan metode jalankan dan menunggu untuk metode notify. Setelah metode notifikasi dipanggil, metode utama berhenti menunggu dan mulai mengeksekusi sisa kode. Main 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 output sebagai nol karena tidak menunggu utas lainnya selesai.
Kalkulator t1 = Kalkulator baru ();
t1. Mulailah ();
System.out.println (t1.sum);
tidur vs tunggu di Jawa | |
Metode sleep menyebabkan thread saat ini untuk menunda eksekusi untuk jumlah milidetik yang ditentukan, tergantung pada ketepatan dan keakuratan timer dan penjadwal sistem. | Metode menunggu menyebabkan utas saat ini menunggu sampai utas lain memanggil metode notify atau notifyAll untuk objek. |
Asosiasi dengan Lock | |
Metode tidur tidak melepaskan kunci pada suatu 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 terputus dengan memanggil metode notify atau notifyAll. |
Ada beberapa proses yang berjalan pada sistem operasi. Setiap proses dapat memiliki beberapa utas. Thread 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 menerapkan multi-threading. Perbedaan antara tidur dan menunggu di Jawa adalah bahwa, tidur digunakan untuk menunda eksekusi utas saat ini untuk jumlah milidetik yang ditentukan, sementara metode menunggu digunakan untuk menyebabkan utas saat ini menunggu sampai utas lain memanggil pemberitahuan atau beri tahuAll metode untuk objek.
1. "Komunikasi Antar-Thread di Jawa - Javatpoint.". JavaTPoint. Tersedia disini
2. Inter Thread Komunikasi dalam Java Multithreading | Tutorial Java Inti | Malam studi. Tersedia disini