Selasa, 25 Oktober 2011

Programming Multithreading

Pengertian Thread
Thread adalah objek yang mewakili satu unit eksekusi sekumpulan instruksi.
Ada pula yang mendefinisikan, thread adalah sekumpulan instruksi yang dapat
dieksekusi secara mandiri. Proses adalah satu unit kepemilikan sumberdaya.
Multithreading adalah suatu kemampuan yang memungkinkan beberapa thread
dapat dijalankan secara bersamaan/bergantian/konkuren.
Manfaat aplikasi menggunakan multithreading yaitu agar thread-thread di suatu
proses, dapat sharing kode program, data, dan sumber daya, secara lebih efisien
dibanding proses-proses terpisah, sehingga kinerja aplikasi berbasis thread lebih baik
dibanding aplikasi berbasis proses.

9.2. Membuat Thread
Untuk membuat thread ada dua cara yaitu:
1) Membuat kelas implementasi dari interface Runnable
public class NamaThread1 implements Runnable {
………
public void run() {
………
}
………
}
2) Membuat kelas turunan dari kelas thread
public class NamaThread2 extends Thread{
………
public void run() {
………
}
………
}

Multitasking adalah kemampuan komputer melakukan banyak tugas secara
konkuren/bergantian. Pada multitasking, konkurensi melibatkan banyak proses.
Karena multithreading perluasan dari multitasking, maka pada multithreading setiap
proses melibatkan banyak thread.
Terdapat tiga kelas yang berkaitan dengan aplikasi multithreading :
1. Thread : membuat thread di program
2. ThreadDeath : membersihkan thread yang telah berakhir eksekusinya.
3. ThreadGroup : mengelompokkan thread-thread
Hanya ada satu interface yaitu Runnable yang digunakan untuk membuat thread.
Method-method standard yang berkaitan dengan multithreading :
a. start() = dipanggil setiap kali thread dimulai.
b. init() = gunanya sama dengan start() untuk menempatkan program inisialisasi
c. run() = berisi badan Thread
d. stop() = untuk menghentikan thread dan ditempatkan di akhir badan thread
e. Method-method standard lain adalah wait(), notify(), notifyAll(), sleep(), isAlive()
dan interrupt().

4. Siklus Hidup Thread
a. Pertama kali thread diciptakan (born), selalu dalam kondisi ready. Method
start() harus dipanggil untuk mengeksekusi method run() sehingga thread
tersebut siap segera dieksekusi processor.
b. Thread yang berada pada kondisi ready antri menunggu giliran untuk
dieksekusi, penjadwal akan melakukan dispatching kepada thread sehingga
thread transisi dari kondisi ready ke running (processor sedang
mengeksekusi thread tersebut).

c. Jika saat eksekusi thread memerlukan kondisi tertentu untuk dipenuhi atau
karena diinterupsi, maka thread tersebut dapat memanggil method wait() atau
sleep() agar thread dapat transisi dari kondisi running ke kondisi waiting
(menunggu sampai masuk kembali ke kondisi ready).
d. Thread transisi dari kondisi running ke kondisi dead ketika method run()
selesai dilaksanakan atau diakhiri karena terjadi exception, selanjutnya
dihapus dari memori aktif.

5. Contoh-Contoh Program
5.1. Contoh1
class Mobil extends Thread {
public Mobil(String id) {
super(id); // id adalah nama thread
}
public void run() {
String nama = getName();
for (int i=0; i<5; i++) {
try {
Thread.currentThread().sleep(1000); // tunggu 1000 milli detik
}
catch (InterruptedException ie) {
System.out.println("Terinterupsi");
}
System.out.println("Thread " + nama + ": dijalankan ke " + i);
}
}
}
public class AplyThreadMobil {
public static void main(String[] args) {
Mobil mbl1 = new Mobil("Mobil1"); // membuat objek Thread1, dinamai Mobil1
Mobil mbl2 = new Mobil("Mobil2"); // membuat objek Thread2, dinamai Mobil2
mbl1.start(); // eksekusi thread mbl1, dengan cara mengeksekusi method run()
mbl2.start(); // eksekusi thread mbl2, dengan cara mengeksekusi method run()
}
}

Tidak ada komentar:

Posting Komentar