Perbedaan antara tidur dan tunggu di java

Perbedaan antara tidur dan tunggu di java

Perbedaan Utama - Tidur vs Tunggu Jawa
 

Tidur dan tunggu adalah dua metode yang digunakan untuk multithreading di Java. Metode tidur milik kelas utas saat metode tunggu berasal dari kelas objek. Itu perbedaan utama Antara tidur dan tunggu di Jawa adalah itu, Tidur digunakan untuk menangguhkan pelaksanaan utas saat ini untuk jumlah milidetik yang ditentukan sementara metode tunggu digunakan untuk menyebabkan utas saat ini menunggu sampai utas lain memanggil metode pemberitahuan atau pemberitahuan untuk objek.

Utas adalah unit pemrosesan terkecil dalam sistem operasi. Ini adalah aliran kontrol berurutan tunggal dalam suatu program. Benang ringan. Multithreading adalah mekanisme menjalankan beberapa utas secara bersamaan. Bahasa pemrograman seperti Java mendukung multithreading. Multithreading memiliki kelebihan karena memungkinkan untuk menjalankan beberapa utas secara bersamaan dan utasnya tidak tergantung satu sama lain. Ada metode dalam java yang dapat digunakan untuk multithreading. Dua dari mereka tidur dan tunggu.

ISI

1. Ikhtisar dan Perbedaan Utama
2. Apa itu tidur di java
3. Apa itu Tunggu di Java
4. Kesamaan antara tidur dan tunggu di java
5. Perbandingan berdampingan - tidur vs tunggu di java dalam bentuk tabel
6. Ringkasan

Apa itu tidur di java?

Ada beberapa proses yang berjalan dalam sistem operasi. Proses adalah program dalam pelaksanaan. Setiap proses dapat memiliki banyak utas, dan ada konteks switching yang terjadi di antara utas ini. Di Java, ada dua cara untuk membuat utas. Yaitu dengan memperluas kelas utas atau dengan menerapkan antarmuka runnable. Kelas utas memiliki konstruktor dan metode untuk membuat dan melakukan operasi di utas. Kelas Thread memperluas kelas objek dan mengimplementasikan antarmuka runnable. Antarmuka runnable harus diimplementasikan oleh kelas mana pun yang contohnya dimaksudkan untuk dieksekusi oleh utas. Saat 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 utas, programmer dapat memohon metode start. Sebelum memohon metode itu, utas dikatakan berada di negara bagian baru. Penjadwal utas memilih utas untuk dijalankan. Jika utas belum dipilih oleh penjadwal utas tetapi jika metode start dipanggil, maka utasnya dalam keadaan runnable. Setelah penjadwal utas memilih utas untuk dieksekusi, transit ke status berjalan. Jika utasnya masih hidup tetapi saat ini tidak memenuhi syarat untuk dijalankan, maka itu dalam keadaan tidak dapat dijalankan atau diblokir. Setelah menyelesaikan metode run, utas masuk ke keadaan yang diakhiri.  Itulah 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 Tidur Kosong Publik (Long Miliseconds) Melemparkan ExcepedException. Itu menyebabkan utas yang sedang dieksekusi saat ini menghentikan eksekusi sementara untuk sejumlah milidetik yang ditentukan. Jika utas lain mengganggu utas saat ini, status terputus dari utas saat ini dibersihkan saat pengecualian ini dilemparkan.

Gambar 01: Program Java dengan Metode Tidur

Menurut program di atas, metode run berisi kode yang harus dieksekusi. Dalam program utama, dua objek dari exampleThread1 dibuat, dan metode awal dipanggil untuk mereka. Yang akan memungkinkan untuk menjalankan kode di dalam metode run. Hanya satu utas yang dieksekusi sekaligus. Dengan utas. tidur (1000); akan memungkinkan utas pertama untuk mengakhiri eksekusi selama 1000 milidetik. Saat utas sedang tidur, penjadwal utas mengambil utas lainnya.

Apa itu Tunggu di Java?

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. Asumsikan situasi sebagai berikut. Jika, ada dua utas sebagai T1 dan T2, T1 mulai menyimpan nilai ke file teks yang disebut Text1.txt. Nilai -nilai tersebut 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, saat T1 mulai menggunakan teks1.file txt, file itu dapat dikunci, jadi hanya dapat diakses oleh T1. T2 tidak dapat mengubahnya sampai T1 melepaskan kunci untuk mengakses file teks itu. Saat tugas selesai, T1 dapat melepaskan kunci. Kunci juga dikenal sebagai monitor.

Sinkronisasi utas dapat dicapai dengan komunikasi antar-utang. Bagian kritis adalah segmen kode yang mengakses sumber daya bersama. Dalam komunikasi antar-thread, utas dijeda yang berjalan di bagian kritisnya, dan utas lain diizinkan untuk masuk di bagian kritis yang sama untuk dieksekusi. Itu diimplementasikan menggunakan metode tunggu, beri tahu dan beri tahu. Mereka termasuk dalam kelas objek. Metode tunggu digunakan untuk memungkinkan utas saat ini melepaskan kunci dan menunggu sampai utas lain memanggil metode pemberitahuan atau pemberitahuan untuk objek. Metode pemberitahuan digunakan untuk membangunkan satu utas yang menunggu kunci. Notifyall membangunkan semua utas yang menunggu di kunci.

Gambar 02: Kelas kalkulator

Gambar 03: Metode Utama

Kelas kalkulator memperluas utas. Blok yang disinkronkan berada di dalam metode lari. Metode Loop dan Notify ada di dalam blok yang disinkronkan. Di dalam metode utama, instance dari utas yang dibuat dan metode start dipanggil pada contoh itu. Metode utama akan menunggu sampai utas memberikan pemberitahuan. Saat menjalankan program, metode utama menunggu sampai seluruh pelaksanaan metode run dan menunggu metode pemberitahuan. Setelah metode pemberitahuan dipanggil, metode utama berhenti menunggu dan mulai mengeksekusi sisa kode. Utama menunggu sampai utas kalkulator selesai. Akhirnya, hasil dari jumlah 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 untuk diselesaikan.

Kalkulator T1 = Kalkulator Baru ();

 t1. awal ();

Sistem.keluar.println (t1.jumlah);

Apa kesamaan antara tidur dan tunggu di java?

  • Baik tidur dan tunggu adalah metode yang dapat digunakan saat menerapkan multithreading di java

Apa perbedaan antara tidur dan tunggu di java?

tidur vs tunggu di java

Metode tidur menyebabkan utas saat ini menangguhkan eksekusi untuk jumlah milidetik yang ditentukan, tunduk pada presisi dan akurasi timer dan penjadwal sistem. Metode tunggu menyebabkan utas saat ini menunggu sampai utas lain memanggil metode pemberitahuan atau pemberitahuan untuk objek.
 Asosiasi dengan kunci
Metode tidur tidak melepaskan kunci pada objek selama sinkronisasi. Metode tunggu melepaskan kunci selama sinkronisasi.
Metode eksekusi
Metode tidur dijalankan pada utas saat ini. Metode tunggu dipanggil pada objek.
 Kelas terkait
Tidur adalah metode kelas utas. Tunggu adalah metode kelas objek.
Penyelesaian
Proses tidur selesai setelah jumlah waktu yang ditentukan berakhir. Metode tunggu terganggu dengan memanggil metode pemberitahuan atau pemberitahuan.

Ringkasan - Tidur vs Tunggu Jawa

Ada beberapa proses yang berjalan pada sistem operasi. Setiap proses dapat memiliki banyak utas. Utas adalah unit pemrosesan terkecil dalam sistem operasi. Bahasa pemrograman Java mendukung multithreading. Itu memungkinkan menjalankan beberapa utas secara bersamaan. Tidur dan tunggu adalah dua metode yang dapat digunakan saat menerapkan multi-threading. Perbedaan antara tidur dan tunggu di java adalah bahwa, tidur digunakan untuk menangguhkan eksekusi utas saat ini untuk jumlah milidetik yang ditentukan sementara metode tunggu digunakan untuk menyebabkan utas saat ini menunggu sampai utas lain memohon pemberitahuan atau pemberitahuan semua Metode untuk objek.

Referensi:

1.“Komunikasi antar -utara di Java - Javatpoint.". Javatpoint. Tersedia disini
2. Inter Thread Komunikasi di Java Multithreading | Tutorial Core Java | Studytonight. Tersedia disini