A.Thread dalam Java
Thread merupakan potongan program dengan ukuran T kecil (lightweight process) dalam suatu proses yang dapat dijadwalkan oleh sistem operasi. Setiap program Java memiliki setidaknya satu thread, yang dikenal sebagai main thread, yang dibuat oleh Java Virtual Machine (JVM) ketika main method pertama kali dipanggil. Dengan menggunakan thread, Anda dapat mengeksekusi proses dalam sebuah program tertentu secara paralel. Eksekusi dilakukan dengan membagi proses atau operasi tertentu ke dalam beberapa thread. Sistem operasi akan mendeteksi thread-thread tersebut dan membagi waktu pemrosesan untuk masing-masing thread. Oleh karena itu, dengan menggunakan thread, Anda dapat menghemat waktu yang diperlukan untuk melakukan pemrosesan program.
1. Thread Life Cycle
Dalam mempelajari thread, perlu dipahami adanya berbagai tahapan siklus hidup thread seperti ditunjukkan pada diagram berikut.
New ()----->New----->start ()---->Runnable---->run ()---->Running----->Wait ()---->Waiting---->Dead.
Pada diagram thread life cycle, terdapat lima tahapan atau state, yaitu sebagai berikut.
a. New
Pada tahap ini, terjadi pembentukan thread menggunakan statement new. Selanjutnya, thread akan berada pada new state. Pada saat tersebut, thread belum aktif sehingga belum dapat menjalankan perintah apa pun.
b. Runnable
Pada tahap ini, instance threads siap dipanggil menggunakan method start (). Ketika method start() dipanggil, status akan berubah menjadi Runnable. Pada saat tersebut, thread sudah dapat berjalan, tetapi belum dilakukan karena thread scheduler belum dijalankan. Thread scheduler berfungsi sebagai pengontrol yang menentukan thread yang akan berjalan ke tahap berikutnya. Ketika suatu thread telah berpindah dari Runnable state, thread tersebut dapat kembali lagi pada tahap ini.
c. Running
Ketika thread scheduler telah menentukan suatu thread untuk berjalan, thread tersebut akan masuk ke running state. Pada tahap ini, method run() akan dieksekusi dan aktif. Setelah memasuki running state, thread akan masuk ke tahap berikutnya. Thread dapat kembali ke Runnable state, masuk ke Waiting state, atau berhenti dan berakhir pada Dead state.
d. Waiting
Suatu thread dapat masuk ke Waiting state karena beberapa alasan, misalnya pemanggilan method wait(). Pemanggilan ini dapat disebabkan thread tersebut menunggu selesainya thread lain sebelum thread tersebut dapat dijalankan atau tersedianya sumber daya (resource) yang cukup untuk thread tersebut. Setelah Waiting state berakhir, thread akan kembali ke Runnable state.
e. Dead
Suatu thread akan memasuki Dead state setelah selesai menjalankan method run (). Thread tersebut akan berhenti dan dinyatakan mati (terhenti). Jika Anda mencoba memanggil method start() pada state ini, Anda akan mendapatkan pesan Illegal ThreadStateException, yang disebabkan pemanggilan method dilakukan tidak pada state yang seharusnya.
2. Prioritas Thread
Dalam melakukan pembagian waktu pemrosesan thread (scheduling), Java memiliki priority atau prioritas yang menentukan proses yang akan dijalankan terlebih dahulu. Prioritas thread dalam Java memiliki pembagian nilai prioritas sebagai berikut.
a. MIN_PRIORITY: thread dengan nilai prioritas 1 (rendah).
b. NORM_PRIORITY: thread dengan nilai prioritas 5 (normal), nilai prioritas ini adalah nilai default yang diberikan pada setiap thread di Java.
C. MAX_PRIORITY: thread dengan nilai prioritas 10 (tinggi).
3. Jenis-jenis Thread
Berdasarkan pembuatnya, thread dalam Java terbagi atas. dua jenis, yaitu sebagai berikut.
a. User thread
User thread adalah thread yang dibuat oleh aplikasi atau user dan memiliki nilai prioritas tinggi. Thread ini adalah thread utama yang dijalankan. JVM baru akan dijalankan setelah prosesor selesai mengeksekusi semua user thread.
b. Daemon thread
Daemon thread adalah thread yang sebagian besar dibuat oleh JVM dan memiliki nilai prioritas rendah. Thread ini biasa digunakan untuk melakukan proses background, seperti garbage collection dan house-keeping. Berbeda dengan user thread, JVM tidak menunggu thread ini selesai melakukan eksekusi. Setelah semua user thread selesai diekseskusi, JVM akan langsung menutup tanpa menunggu semua daemon thread selesai terlebih dahulu.
B.Pembuatan Thread dalam Java
Pembuatan thread dalam Java dapat dilakukan menggunakan dua macam cara, yaitu menggunakan interface Runnable dan membuat turunan dari thread. Berikut adalah penjelasan mengenai dua cara pembuatan single thread tersebut.
1. Menggunakan interface Runnable
Untuk menggunakan teknik ini, selain mengimplementasi interface Runnable, juga perlu dibuat sebuah method run ().
Perhatikan kode program berikut:
Tidak ada komentar:
Posting Komentar