Siklus Hidup Thread di Jawa
Diterbitkan: 2023-01-27Daftar isi
Dasar-dasar Utas Java:
Utas di Java memfasilitasi kinerja beberapa aktivitas di dalam satu proses. Ini dianggap sebagai proses yang ringan. Utas juga dapat didefinisikan sebagai urutan pernyataan yang dieksekusi. Setiap utas di Java memiliki tumpukan, penghitung program, dan variabel lokalnya sendiri. Utas Java juga bisa berupa serangkaian pemanggilan metode bersarang. Memori, status per proses, dan file dibagikan oleh utas.
Penggunaan utas di Jawa:
- Untuk melakukan pemrosesan latar belakang atau asinkron
- Untuk meningkatkan sensitivitas aplikasi GUI
- Untuk mengimplementasikan sisi positif dari sistem multiprosesor
- Untuk merampingkan logika pemrograman jika ada banyak
Ada dua jalur eksekusi ketika sebuah thread dipanggil. Salah satu dari dua jalur digunakan untuk eksekusi utas dan yang lainnya akan mengikuti pernyataan setelah pemanggilan utas. Setiap utas di Java memiliki ruang memori dan tumpukan yang terpisah.
Faktor risiko yang dihadapi saat menggunakan utas dalam kode Java adalah sebagai berikut.
- Koordinasi yang tepat antara utas diperlukan jika utas mengakses variabel umum untuk melihat data secara konsisten.
- Kinerja dan pemeliharaan utas, jika digunakan secara berlebihan dalam program, menjadi sulit.
Siklus Hidup Utas di Jawa:
Setiap saat eksekusi program, utas di Java ada di salah satu dari status yang disebutkan di bawah ini.
- Baru
- Diblokir
- Dapat dijalankan
- Waktu menunggu
- Menunggu
- Dihentikan
Tampilan detail Siklus Hidup utas di Jawa
Utas baru:
Utas yang baru dibuat dalam status 'Baru'. Itu tidak berkembang untuk dijalankan pada keadaan ini. Eksekusi kode utas di negara bagian baru belum dilakukan. Itu belum berjalan.
Status yang dapat dijalankan:
Utas dalam keadaan runnable siap dijalankan. Utas dalam keadaan ini mungkin siap dijalankan kapan saja atau mungkin sudah berjalan. Penjadwal utas mengasah tanggung jawab untuk mengalokasikan waktu agar utas berjalan. Setiap utas dialokasikan waktu tertentu dalam program multi-utas. Setiap utas individu berjalan untuk durasi kecil dan kemudian menemui jeda. CPU kemudian dilepaskan ke utas lain untuk memberikan kesempatan bagi utas lainnya untuk berjalan. Pada titik ini, semua utas yang siap dijalankan yang sedang menunggu CPU dan utas yang sedang berjalan saat ini berada dalam keadaan dapat dijalankan.
Lihat kursus teknologi gratis kami untuk mendapatkan keunggulan dalam persaingan.
Jelajahi Kursus Rekayasa Perangkat Lunak Populer kami
Master of Science dalam Ilmu Komputer dari LJMU & IIITB | Program Sertifikat Keamanan Siber Caltech CTME |
Kamp Pelatihan Pengembangan Tumpukan Penuh | Program PG di Blockchain |
Program PG Eksekutif dalam Pengembangan Stack Penuh | |
Lihat Semua Kursus kami Di Bawah Ini | |
Kursus Rekayasa Perangkat Lunak |
Status Menunggu / Diblokir:
Sebuah utas berada dalam salah satu dari status yang disebutkan di bawah saat tidak beroperasi untuk sementara.
- Menunggu
- Diblokir
Utas yang menunggu selesainya I/O dalam keadaan diblokir. Fungsi penjadwal utas adalah untuk menjadwalkan eksekusi utas yang diblokir atau menunggu dengan mengaktifkannya kembali. Utas apa pun dalam status ini tidak diizinkan untuk melanjutkan eksekusi lebih lanjut hingga diubah menjadi status dapat dijalankan. Utas di blok atau status tunggu tidak menggunakan siklus CPU apa pun.
Utas terpaksa diblokir saat mencoba mengakses bagian kode yang dilindungi yang saat ini dilindungi oleh beberapa utas lainnya. Penjadwal mengubah salah satu utas yang menunggu bagian yang dilindungi menjadi status dapat dijalankan saat bagian dibuka kuncinya untuk semua utas. Di sisi lain, sebuah utas ada dalam keadaan menunggu saat menunggu utas lainnya pada kondisi tertentu. Utas dalam status menunggu didorong ke status dapat dijalankan setelah kondisi yang ditentukan untuk menunggu terpenuhi. Jika utas yang berjalan saat ini dipindahkan ke status menunggu/diblokir, penjadwal utas menjadwalkan utas lain dari urutan yang dapat dijalankan untuk dijalankan.
Waktu tunggu:
Saat metode dipanggil dengan argumen waktu habis, utas ada dalam status menunggu waktu. Utas terus berada dalam kondisi ini hingga waktu tunggu yang ditentukan selesai atau hingga pemberitahuan diterima. Misalnya, sebuah utas digeser ke status tunggu berwaktu jika meminta tunggu atau tidur bersyarat.
Status dihentikan:
Pemutusan utas terjadi karena salah satu dari alasan berikut.
- Keluar normal dari utas setelah penyelesaian eksekusi segmen kode di dalam utas.
- Terjadinya peristiwa kesalahan yang jarang terjadi seperti pengecualian yang tidak tertangani dan kesalahan segmentasi.
Utas dalam keadaan terminasi tidak menggunakan siklus CPU apa pun.
Pelajari Kursus Pengembangan Perangkat Lunak online dari Universitas top Dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Lanjutan, atau Program Magister untuk mempercepat karier Anda.
Keterampilan Pengembangan Perangkat Lunak Dalam Permintaan
Kursus JavaScript | Kursus Inti Java | Kursus Struktur Data |
Kursus Node.js | Kursus SQL | Kursus pengembangan tumpukan penuh |
Kursus NFT | Kursus DevOps | Kursus Data Besar |
Kursus React.js | Kursus Keamanan Cyber | Kursus Komputasi Awan |
Kursus Desain Database | Kursus Python | Kursus Cryptocurrency |
Implementasi status utas di Jawa:
Untuk menyelesaikan status thread saat ini di Java, kami menggunakan metode Thread.getState(). Java juga menawarkan kelas java.lang.Thread.State di mana konstanta ENUM untuk status thread ditentukan. Rinciannya dirangkum dalam tabel di bawah ini.
Tipe Konstan | Pernyataan | Keterangan |
Baru | Utas final statis publik.State BARU | Ini adalah status utas dari utas yang baru saja dibuat dan belum memulai eksekusinya. |
Dapat dijalankan | Thread.State akhir publik statis DAPAT DIJALANKAN | Ini menggambarkan status utas yang sudah berjalan atau utas yang siap dijalankan. Utas yang sama dapat dalam keadaan dapat dijalankan untuk mesin Virtual Java dan keadaan menunggu untuk sumber daya sistem operasi lain seperti prosesor. |
Diblokir | Utas final statis publik.State DIBLOKIR | Ini menggambarkan status utas yang diblokir menunggu kunci monitor. Itu tetap dalam keadaan yang sama sampai blok monitor memasuki metode/blok yang disinkronkan atau memasukkan kembali metode yang disinkronkan setelah menjalankan Object.wait(). |
Menunggu | Utas akhir statis publik.State MENUNGGU | Ini menggambarkan keadaan utas yang menunggu karena pemanggilan salah satu metode berikut.
Keadaan menunggu mungkin karena penyelesaian tugas tertentu oleh utas lain. |
Waktu menunggu | Utas akhir statis publik.State TIMED_WAITING | Ini adalah status utas yang menunggu waktu yang ditentukan. Pemanggilan salah satu dari metode berikut ini menghasilkan status tunggu berwaktu dari sebuah utas dengan waktu tunggu positif yang ditetapkan.
|
Dihentikan | Thread.State final statis publik DIHENTIKAN | Ini adalah status utas yang telah selesai mengeksekusi pernyataan kode konstituennya. |
Utas berada dalam status BARU saat baru saja dibuat. Saat metode .start() dipanggil pada sebuah thread, metode tersebut dipindahkan ke status Runnable oleh thread scheduler. Saat metode join() dipanggil pada instance utas, utas yang mengeksekusi pernyataan kode saat ini akan menunggu hingga utas ini berakhir. Jadi, sebelum mencetak pernyataan akhir di konsol, fungsi join() dipanggil pada utas 2 oleh program dan membuat utas1 menunggu hingga utas2 menyelesaikan eksekusinya dan berpindah ke Status Terminasi. Karena thread1 sedang menunggu selesainya eksekusi thread2, maka statusnya MENUNGGU.
Baca Artikel Populer kami yang terkait dengan Pengembangan Perangkat Lunak
Bagaimana Menerapkan Abstraksi Data di Java? | Apa itu Kelas Dalam di Jawa? | Pengidentifikasi Java: Definisi, Sintaks, dan Contoh |
Memahami Enkapsulasi dalam OOPS dengan Contohnya | Argumen Baris Perintah di C Dijelaskan | 10 Fitur & Karakteristik Cloud Computing Teratas di Tahun 2022 |
Polimorfisme di Jawa: Konsep, Jenis, Ciri & Contoh | Paket di Jawa & Bagaimana Menggunakannya? | Tutorial Git Untuk Pemula: Pelajari Git dari Awal |
Kelebihan dan Keterbatasan menggunakan utas dalam program Java:
Penggunaan thread pada program Java memiliki manfaat sebagai berikut.
- Pengurangan waktu yang dibutuhkan untuk mengembangkan kode
- Mengurangi biaya perawatan
- Peningkatan kinerja aplikasi yang kompleks
- Meningkatkan responsivitas antarmuka pengguna
- Memparalelkan tugas
- Utas digunakan dalam aplikasi server untuk meningkatkan throughput yang tinggi dan pemanfaatan sumber daya.
- Jika semua sumber daya komputasi CPU tidak dapat digunakan oleh sebuah utas, menjalankan utas lainnya akan membuat ini tetap aktif.
- Jika kumpulan data yang sama dioperasikan oleh beberapa utas, cache mereka dapat dibagikan. Ini mengarah pada penggunaan cache yang lebih baik atau harmonisasi nilainya.
Ada beberapa kelemahan menggunakan utas dalam program Java. beberapa dari mereka terdaftar di bawah ini.
- Saat berbagi cache, translation lookaside buffers (TLB) atau sumber daya perangkat keras lainnya, beberapa utas dapat saling mengganggu.
- Bahkan ketika hanya satu utas yang beroperasi, waktu eksekusi utas tidak dapat ditingkatkan. Namun, degradasi waktu eksekusi diperbolehkan. Hal ini mungkin disebabkan oleh tahapan pipa tambahan dan/atau frekuensi yang lebih lambat yang diperlukan untuk akomodasi perangkat keras pengalih ulir.
- Banyak perubahan diperlukan baik dalam sistem operasi maupun program aplikasi dibandingkan dengan multiprosesor karena dukungan perangkat keras lebih terekspos ke perangkat lunak dalam multithreading.
Jika Anda tertarik untuk mempelajari lebih lanjut tentang Java, pengembangan perangkat lunak full-stack, lihat Program PG Eksekutif upGrad & IIIT-B dalam Pengembangan Perangkat Lunak – Spesialisasi dalam Pengembangan Stack Penuh yang dirancang untuk pekerja profesional dan menawarkan 500+ jam pelatihan ketat , 9+ proyek, dan penugasan, status Alumni IIIT-B, proyek batu penjuru praktis & bantuan pekerjaan dengan perusahaan terkemuka.