Pengertian thread
Sebuah thread merupakan sebuah pengontrol aliran program. Untuk lebih mudahnya, bayangkanlah thread sebagai sebuah proses yang akan di eksekusi di dalam sebuah program tertentu. Thread adalah suatu bagian program yang tidak tergantung pada bagian lain, dan dapat dijalankan secara bersama-sama. Hal ini berarti, suatu thread dapat diberhentikan atau diistirahatkan tanpa harus menghentikan yang lainnya. Pada Java, setiap thread dikontrol oleh suatu obyek unik turunan Thread, yang didefinisikan di dalam paket java.lang.Pada saat sebuah program Java dijalankan, sebenarnya terdapat satu thread yang secara otomatis dibuat. Thread ini biasa disebut sebagai thread utama. Thread ini merupakan induk dari thread-thread yang lain. Meskipun thread utama ini otomatis dijalankan, tetapi kita dapat mengendalikannya melalui obyek Thread dengan memanggil method currentThread(). Perhatikan contoh berikut.
Contoh 8.19. Thread utama.
class ThreadUtama {
public static void main(String[] args)
throws InterruptedException {
// mendapatkan thread yang sedang aktif
Thread tUtama = Thread.currentThread();
// menampilkan informasi tentang thread
System.out.print("Informasi thread: ");
System.out.println(tUtama.toString());
for (int i=0; i<5; i++) {
System.out.println("Detik ke-" + (i+1));
Thread.sleep(1000); // membuat delay selama 1 detik
}
}
}
Pada contoh di atas, kita mendefinisikan thread dengan nama Utama. Variabel ini kita gunakan untuk menangkap thread utama yang sedang berjalan pada program dengan perintah Thread.currentThread(). Kemudian informasi tentang thread ini kita tampilkan di layar. Pada baris yang dimulai dengan for, kita akan menggunakan perintah untuk mengontrol thread yang sedang berjalan. Kita menggunakan method sleep untuk mengontrol thread agar menunda pekerjaan selama 1 detik tiap kali pengulangan. Cobalah ketik kode di atas, kemudian jalankan. Kemudian coba hapus baris Thread.sleep(1000);. Jalankan lagi program. Apa yang berbeda?
Pembuatan dan penggunaan thread
Thread dapat dibuat dengan dua cara yaitu: dengan membuat kelas baru yang menerapkan interface Runnable, dan membuat kelas baru dengan menurunkan dari kelas Thread. Kedua cara tersebut membutuhkan paket java.lang. Secara default, paket ini telah otomatis diimpor pada saat kita membuat program dengan Java.Pada bagian ini kita hanya akan membicarakan cara pertama. Sedangkan cara kedua akan kita bicarakan secara bersamaan pada bagian multi-thread.
Perhatikan contoh berikut.
Contoh 8.20. Membuat thread dengan interface Runnable.
class TestRunnable implements Runnable {
// mengimplementasikan method run() yang dideklarasikan
// di dalam interface Runnable
public void run() {
System.out.println("Thread anak dieksekusi");
}
}
class PenerapanRunnable {
public static void main(String[] args) {
// (LANGKAH KE-1): membuat objek Runnable
TestRunnable obj = new TestRunnable();
// (LANGKAH KE-2): membuat objek Thread dengan
melewatkan objek Runnable
Thread t = new Thread(obj);
// (LANGKAH KE-3) : menjalankan thread
t.start();
System.out.println("Thread utama dieksekusi");
}
}
Pada contoh di atas kita membuat lebih dulu kelas TestRunnable yang menerapkan Runnable (perhatikan baris class TestRunnable implements Runnable dan blok kode dibawahnya). Kemudian kita membuat obyek TestRunnable dari kelas tersebut (lihat pada baris TestRunnable obj = new TestRunnable() ). Obyek ini kita gunakan untuk membuat thread baru dengan cara menggunakan constructor kelas thread (lihat baris Thread t = new Thread(obj) ). Setelah terbentuk, maka kita dapat menjalankan thread tersebut (lihat baris t.start() ).
Multi-thread
Pada contoh 8.19 dan 8.20, kita hanya berhubungan dengan satu dan dua thread. Namun sesungguhnya Java member kemungkinan untuk membuat lebih dari dua thread. Kondisi ini dinamakan sebagai Multi-thread. Coba kita perhatikan contoh berikut ini.Contoh 8.21. Membuat multi-thread.
class MyThread1 extends Thread {
public void run() {
try {
for (int i=0; i<10; i++) {
System.out.println("Thread pertama: detik ke-" +
(i+1));
if (i != 9) {
sleep(1000);
} else {
System.out.println("Thread pertama
selesai...\n");
}
}
} catch (InterruptedException ie) {
System.out.println(ie.getMessage());
}
}
}
class MyThread2 extends Thread {
public void run() {
try {
for (int i=0; i<5; i++) {
System.out.println("Thread kedua: detik ke-" +
(i+1));
if (i != 4) {
System.out.println();
sleep(1000);
} else {
System.out.println("Thread kedua selesai...\n");
}
}
} catch (InterruptedException ie) {
System.out.println(ie.getMessage());
}
}
}
class DemoMultipleThread {
public static void main(String[] args) {
MyThread1 t1 = new MyThread1();
t1.start();
MyThread2 t2 = new MyThread2();
t2.start();
}
}
Kode program di atas menunjukkan bagaimana membentuk dua buah thread. Thread yang pertama kita buat melalui pembuatan kelas MyThread1 dengan cara menurunkan kelas Thread. Cara ini adalah cara kedua membuat thread yang kita singgung di bagian sebelumnya. Thread kedua dengan nama kelas MyThread2 juga kita buat dengan cara yang sama. Kemudian, pada class DemoMultipleThread kita membuat obyek t1 dari kelas MyThread1 dan obyek t2 dari kelas MyThread2. Apabila dijalankan, kode program di atas akan tampak seperti pada gambar 8.12.
0 komentar :
Posting Komentar
Terima kasih, atas saran atau usulan anda.