Penjelasan Multithreading di Java [Dengan Contoh]

Diterbitkan: 2021-06-15

Daftar isi

Thread di Jawa

Utas di Java membantu pengoperasian program yang efisien. Dua unit dasar pelaksanaan proforma adalah proses dan benang. Sebuah proses mungkin aplikasi, Program, atau lingkungan eksekusi mandiri.

Sedangkan utas berbagi sumber daya dengan proses dan ada dengannya. Setidaknya satu utas hadir di setiap aplikasi java yang disebut utas utama. Beberapa utas dapat dibuat dari utas utama. Pelajari lebih lanjut tentang cara membuat utas di Java.

Manfaat Benang Jawa

  • Lebih sedikit waktu dan sumber daya yang diperlukan untuk membuat utas dibandingkan dengan proses. Oleh karena itu utas juga disebut proses ringan.
  • Data dan kode proses induk dibagikan oleh utas.
  • Interkomunikasi antar utas mudah dibandingkan dengan interkomunikasi dalam suatu proses.
  • Thread di Java dapat dibuat melalui implementasi java.lang. Antarmuka yang Dapat Dijalankan.

utas tunggal

Beberapa unit pemrosesan hadir dalam program di mana yang terkecil disebut sebagai utas tunggal. Melalui penggunaan "kelas utas" Java menerapkan utas. Ada dua jenis benang; utas daemon dan utas pengguna.

Saat aplikasi akan dibersihkan, penggunaan utas daemon terjadi. Ini berjalan di latar belakang aplikasi. Sedangkan user thread dibuat saat aplikasi pertama kali dijalankan.

Keuntungan dari benang tunggal:

  • Overhead aplikasi berkurang saat eksekusi satu utas terjadi dalam suatu sistem.
  • Biaya pemeliharaan aplikasi berkurang dengan penggunaan utas tunggal.

Multitasking di Jawa

Multitasking mengacu pada proses eksekusi beberapa tugas oleh CPU pada satu waktu. Terkadang peralihan CPU dapat dilakukan antar tugas oleh pengguna untuk berkolaborasi dengan setiap program bersama-sama. Memori dan sumber daya terpisah dialokasikan untuk proses dalam multitasking. Dalam dua cara, multitasking dapat dicapai.

1. Multiprocessing (multitasking berbasis proses)

  • Area memori terpisah dialokasikan untuk setiap proses. Oleh karena itu ada alamat untuk setiap proses dalam memori.
  • Prosesnya sangat berat.
  • Ada biaya komunikasi yang tinggi antar proses.
  • Beberapa waktu diperlukan untuk berpindah antar proses. Ini diperlukan untuk memperbarui daftar, peta memori, dll.

2. Multithreading (multitasking berbasis thread)

  • Alamat yang sama dibagikan di antara utas.
  • Threadnya ringan.
  • Ada biaya komunikasi yang rendah antara utas.

Apa itu Multithreading?

Ketika dua atau lebih utas dieksekusi dalam suatu program secara bersamaan, mekanisme ini disebut sebagai multithreading. Satu proses menciptakan banyak utas yang meningkatkan daya komputasi. Dua atau lebih bagian dari suatu program dijalankan dengan cara yang mengarah pada pemanfaatan CPU secara maksimal.

Utas disebut sebagai bagian individu dari program. Proses dalam aplikasi dapat berisi beberapa utas atau utas tunggal.
Beberapa utas aplikasi diizinkan oleh Java Virtual Machine. Setiap utas memiliki prioritasnya sendiri. Oleh karena itu, preferensi eksekusi diberikan kepada utas yang memiliki prioritas lebih tinggi daripada yang memiliki prioritas lebih rendah.

Untuk mencapai multitasking, baik proses multithreading dan multiprocessing digunakan. Karena area memori bersama digunakan dalam multithreading, sebagian besar digunakan di atas multiprosesor. Memori disimpan karena alokasi memori tambahan tidak diperlukan. Lebih lanjut, waktu yang dibutuhkan lebih sedikit daripada multiprocessing karena peralihan konteks terjadi di antara utas.

Dalam animasi, game, Java multithreading digunakan. Klik jika Anda ingin mempelajari lebih lanjut tentang arsitektur dan komponen Java.

Dua Mekanisme dapat digunakan untuk membuat utas.

1. Ekstensi kelas utas

2. Implementasi Antarmuka yang Dapat Dijalankan

Kelas Utas vs Antarmuka yang Dapat Dijalankan

  • Memperluas "Kelas utas" tidak dapat memperluas kelas lain karena pewarisan berganda tidak didukung di Java. Tetapi dengan implementasi antarmuka "Runnable", kelas dasar lainnya dapat diperluas dari kelas tersebut.
  • Fungsionalitas dasar thread dapat diperluas melalui perluasan kelas Thread karena metode bawaan disediakan seperti interupsi(), yield(), dll.
  • Objek yang dapat dibagikan oleh banyak utas akan disediakan saat runnable digunakan.

Kelas Benang Jawa

Pemrograman utas di Java dicapai melalui kelas utas. Konstruktor disediakan oleh kelas utas dan metode untuk melakukan operasi utas. Kelas utas mengimplementasikan antarmuka yang dapat dijalankan dan memperluas kelas Objek.

Beberapa metode utas umum yang digunakan adalah:

  1. start(): Eksekusi thread dimulai dengan metode ini. Metode run() dipanggil oleh JVM.
  2. sleep(int milliseconds): Eksekusi thread dijeda selama milidetik yang disediakan saat proses threading dibuat untuk tidur melalui metode ini. Setelah jeda, eksekusi utas dimulai lagi. Utas dapat disinkronkan melalui metode ini.
  3. getName(): Nama utas dikembalikan melalui metode ini.
  4. setPriority(int new priority): Prioritas thread diubah melalui metode ini.
  5. hasil (): Utas saat ini dibuat berhenti dengan eksekusi utas lainnya dengan metode ini.
  6. run(): Metode ini untuk memulai tindakan di utas.
  7. getPriority(): Prioritas utas dikembalikan melalui penggunaan metode ini.
  8. setName(): Nama utas diubah melalui metode ini.
  9. getId(): ID utas dikembalikan melalui metode ini.
  10. suspend(): Utas ditangguhkan melalui metode ini.

Siklus hidup benang

Siklus hidup utas memiliki berbagai tahapan, yang tercantum di bawah ini:

  1. Baru: “Kelas utas” digunakan untuk membuat utas pada tahap ini. Sampai utas dimulai, program tetap berada di tahap ini. Metode ini juga disebut utas lahir.
  2. Runnable: Metode start memanggil instance thread pada tahap siklus hidup thread ini. Penjadwal diserahkan dengan kontrol utas untuk menyelesaikan eksekusi. Apakah utas harus dieksekusi atau tidak tergantung pada penjadwal.
  3. Running: Setelah eksekusi thread dimulai, stage digeser ke stage "running". Satu utas dipilih oleh penjadwal dari kumpulan utas dan memulai eksekusi aplikasi.
  4. Menunggu : Seperti namanya, dalam fase siklus hidup ini, utas menunggu. Sinkronisasi utas sangat penting karena menjalankan beberapa utas dalam suatu aplikasi. Oleh karena itu, ada kebutuhan untuk sebuah utas untuk menunggu, sampai eksekusi utas lainnya selesai. Oleh karena itu, tahap siklus hidup juga dikenal sebagai tahap menunggu.
  5. Mati: Tahap di mana pemutusan utas terjadi disebut sebagai tahap "mati". Setelah utas ditransfer dari menjalankan ke akhir pemrosesan, itu akan dihentikan dan karenanya dalam "status mati"

Sinkronisasi Utas di Jawa

Perilaku asinkron terjadi dalam program dalam kasus multithreading. Jika seharusnya data ditulis melalui satu utas dan pembacaan data dilakukan oleh utas lain secara bersamaan, inkonsistensi mungkin terjadi dalam aplikasi.

Sumber daya yang dibagi antara utas perlu diakses oleh utas lainnya. Oleh karena itu dalam kasus seperti itu, pendekatan sinkronisasi didekati. Metode yang disinkronkan tersedia di Java untuk mencapai perilaku sinkronisasi.

Ketika sebuah utas mencapai blok yang disinkronkan, maka setelah mencapai, metode tersebut tidak dapat dipanggil oleh utas lain pada objek yang sama. Sampai utas selesai mengeksekusi blok dan keluar darinya, utas lainnya harus berhenti dan menunggu.

Pelajari Kursus Perangkat Lunak online dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.

Keuntungan dari Multithreading

  • Beberapa operasi dapat dilakukan secara bersamaan. Dengan utas independen berjalan, pengguna tidak diblokir.
  • Waktu dihemat karena beberapa operasi berjalan bersama.
  • Sebuah utas tidak dapat dipengaruhi oleh utas lain karena mereka independen. Terjadinya pengecualian di satu utas tidak memengaruhi eksekusi utas lainnya.

Contoh multithreading

Contoh program multithreading di java telah ditunjukkan di bawah ini:

Sumber

Gambar 1: Cuplikan contoh kode multithreading

Penjelasan kode

Baris 3: Kelas "GuruThread1" mengimplementasikan runnable.

Baris 8: Ini menampilkan metode utama kelas.

Baris 9: Kelas utas dibuat dan instance "guruThread1" dibuat dan utas dibuat.

Baris 10: "Kelas utas" dipakai dan instance "guruThread2" dan utas dibuat.

Baris 11: Utas bernama guruThread1 dimulai.

Baris 12: Utas bernama guruThread2 dimulai.

Baris 13: Teks "Nama utas mengikuti:" dikeluarkan.

Baris 14: Metode getName() digunakan untuk mendapatkan nama thread1.

Baris 15: Metode getName() digunakan untuk mendapatkan nama thread2.

Eksekusi kode di atas menghasilkan output berikut:

Sumber

Gambar: Tangkapan layar dari output yang dihasilkan dari program multithreading di Java (diambil dari

Kesimpulan

Artikel ini membahas tentang konsep multithreading di Java beserta contoh program multithreading di java. Pembelajaran Anda tidak berhenti di sini dan bergaul dengan semua konsep dasar Java lainnya.

Jika Anda tertarik untuk menguasai keterampilan pemrograman Anda dengan harga yang bersahabat dan membuat diri Anda siap industri, Anda dapat memeriksa kursus yang ditawarkan oleh upGrad “Magister Sains dalam Ilmu Komputer”. Ini untuk semua profesional tingkat menengah dalam kelompok usia 21 hingga 45 tahun. Kursus ini disertifikasi oleh Liverpool John Moores University, dan dirancang dengan 500+ jam pembelajaran, 309 proyek, dan tugas untuk menghasilkan yang terbaik dari Anda. Jika Anda memiliki pertanyaan, kirimkan pesan kepada kami, tim kami akan menghubungi Anda.

Dapatkan Pekerjaan Impian Anda

Mendaftar untuk Program PG Eksekutif dalam Pengembangan Perangkat Lunak dari IIIT-B