Top Banner
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.
8

Multi Thread JAVA

Jun 19, 2015

Download

Documents

freakier
Welcome message from author
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
Page 1: Multi Thread JAVA

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.

Page 2: Multi Thread JAVA

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 :

Page 3: Multi Thread JAVA

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

Page 4: Multi Thread JAVA

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 :

Page 5: Multi Thread JAVA

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 :

Page 6: Multi Thread JAVA

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 :

Page 7: Multi Thread JAVA

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

Thread.NORM_PRIORITY.