M U L T I T H R E A D A. Mengenal Thread. Thread adalah sekuens (rangkaian) eksekusi dari sebuah aplikasi Java. Aplikasi Java berjalan di atas Java VM (Virtual Machine). Java Virtual Machine mungkin saja menjalankan beberapa aplikasi secara simultan (dalam waktu yang bersamaan), atau mungkin menjalankan bagian-bagian sebuah aplikasi secara simultan. Sebuah aplikasi Java minimal mempunyai sebuah Thread. Berikut ini adalah gambar hubungan antara program dengan thread. Multiple Thread memungkinkan seorang programmer untuk membuat task berjalan secara parallel pada sebuah computer.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
M U L T I
T H R E A D
A. Mengenal Thread.
Thread adalah sekuens (rangkaian) eksekusi dari sebuah aplikasi Java. Aplikasi Java
berjalan di atas Java VM (Virtual Machine). Java Virtual Machine mungkin saja menjalankan
beberapa aplikasi secara simultan (dalam waktu yang bersamaan), atau mungkin menjalankan
bagian-bagian sebuah aplikasi secara simultan. Sebuah aplikasi Java minimal mempunyai sebuah
Thread. Berikut ini adalah gambar hubungan antara program dengan thread.
Multiple Thread memungkinkan seorang programmer untuk membuat task berjalan secara
parallel pada sebuah computer. Misalkan saat sebuah aplikasi Java dieksekusi dan meminta
prosesor melakukan operasi I/O, waktu tunggu yang ada bisa dimanfaatkan untuk eksekusi
threadyang lain dari sebuah aplikasi Java. Atau pada saat aplikasi word prosessor, saat user
melakukan pencetakan, sambil mencetak dokumen, user masih dapat melakukan pengetikan
terhadap dokumen.
Sebenarnya proses yang terjadi pada beberapa aplikasi yang nampak bersamaan tersebut
tidaklah benar-benar dilakukan dalam waktu yang sama. Sebuah proses dijalankan selama
beberapa milidetik secara bergantian lalu menyimpan status akhirnya, kemudian gnati
menjalankan proses yang lain, dan demikian seterusnya.
B. Mengenal Kelas Thread dan Interface Runnable.
Sebuah thread baru tercita saat terjadi instansiasi objek dari kelas
java.lang.Thread. Untuk menciptakan thread kita perlu mengenal interface
Runnable, yanitu sebagai berikut :
public interface Runnable{
abstract public void run();
}
Setiap thread dapat memulai siklus hidupnya dengan mengeksekusi method
run() dalam objek Runnable. Objek Runnable ini dapat disebut sebagai objek target dari
sebuah thread baru.
Setiap objek thread baru yang tercipta sementara akan idle sampai dipanggil
method start(). Setelah ada pemanggilan method ini kemudian thread dalam status
wake up, thread akan menjalankan task yang ada pada method run() pada objek
targetnya. Untuk mengakhiri thread terdapat method kebalikan dari method start(),
yaitu method stop(), yang melakukan dealokasi objek thread secara permanen.
Teknik lain dalam menciptakan thread adalah dengan langsung menggunakan kelas
Thread yang sebenarnya telah mengimplementasikan interface Runnable. Kelas thread
ini memiliki method run() sendiri yang dapat di-override untuk menjalankan task yang
ingin dilakukan oleh thread. Berikut gambaran umumnya :
Class Thread1 implements Runnable{
Public void run(){
Try{
While(true){
//Proses yang dilakukan thread
}
}catch(Exception e){
e.printStackTrace();
}
}
}
Berikut ini contoh program thread sederhana dengan membuat kelas yang
mengimplementasikan interface runnable, menginstansiasi objek dengan kelas Thread
dengan objek Runnable sebagai parameter, memanggil method start() dari objek thread.
Penjelasan program :
Kelas Thread1 adalah kelas yang mengimplementasikan interface Runnable.
Method run adalah method pada interface Runnable yang akan dijalankan secara
parallel. Instansiasi dari kelas Thread1 akan dijadikan parameter pada instansiasi objek
Thread. Program akan menjalankan method run milik objek t1 dan t2 secara parallel
dengan cara memanggil method start() milik objek dari instans Thread.
Hasil eksekusi program :
Berikutnya, contoh teknik penciptaan thread dengan membuat kelas atau objek
yang mewarisi kelas Thread, melakukan overriding terhadap method run() pada kelas
Thread, dan memanggil mmethod start() dari objek tersebut. Contoh list program dapat
dilihat sebagai berikut :
Penjelasan Program :
Untuk mengeksekusi objek-objek Thread, sebenarnya yang dieksekusi
secara parallel adalah method run yang didefinisikan pada kelas objek tersebut. Namun
cara pemanggilan method run() ini adalah dengan cara memanggil mthod start()
kepunyaan kelas Thread.
Dalam contoh di atas, method run yang dimiliki objek t1 bertipe kelas Thread2
dipanggil dengan memanggil method start dari t1, yang sebenarnya kepunyaan kelas
Thread (t1 mewarisi Thread).
Pada eksekusi program di atas, eksekusi t1.start(), eksekusi t2.start()
dan eksekusi t3.start() berjalan secara paralel.
Hasil eksekusi program :
C. Penundaan dan Pengeksekusian Kembali Threads.
Pengeksekusian sebuah thread dapat dihentikan sementara, untuk kemudian
dijalankan kembali. Saat thread dihentikan semenatar ini disebut dengan suspending
thread, dan ketika thread kembali dijalankan disebut dengan resuming thread.
Suspending thread dan resuming thread dapat dilakukan dengan method miliki
kelas Thread :
Void suspend();
Void resume();
D. Prioritas Thread.
Pada beberapa contoh di atas, thread-thread tersebut dijalankan secara terpisah.
Namun kadang-kadang perlu dibuat 2 atau lebih thread yang memerlukan pengaksesan
terhadap, misalkan, variable yang sama, atau resource yang sama. Dengan melakukan
pengesetan prioritas terhadap pengeksekusian thread, kita dapat menentukan thread mana
yang lebih diprioritaskan untuk mengakses variable atau resource yang sama.
Method setPriority dapat dipakai untuk melakukan pengesetan prioritas
tersebut.Pengesetan set priority dapat bernilai Thread.MIN_PRIORITY atau
Thread.MAX_PRIORITY. Secara default, thread yang tercipta memiliki nilai priority