Pembentukan Thread
Ada dua cara untuk membuat thread di program Java, yaitu:
- Extends kelas Thread
- Implements interface Runnable.
Interface Runnable didefinisikan sebagai berikut:
public interface Runnable
{
public abstract void run();
}
Kelas
Thread
secara implisit juga meng- implements interface Runnable
. Oleh karena itu, setiap kelas yang diturunkan dari kelas Thread
juga harus mendefinisikan method run()
. Berikut ini adalah contoh kelas yang menggunakan cara pertama untuk membuat thread, yaitu dengan meng- extends kelas Thread
.
class CobaThread1 extends Thread
{
public void run()
{
for (int ii = 0; ii<4; ii++){
System.out.println("Ini CobaThread1");
Test.istirohat(11);
}
}
}
Konsep pewarisan dalam Java tidak mendukung multiple inheritance. Jika sebuah kelas sudah meng- extends suatu kelas lain, maka kelas tersebut tidak lagi bisa meng- extends kelas
Thread
. Oleh karena itu, cara kedua, yaitu meng- implements interface Runnable
, lebih umum digunakan, karena kita bisa meng- implements dari banyak kelas sekaligus.
class CobaThread2 implements Runnable
{
public void run()
{
for(int ii = 0; ii<4; ii++){
System.out.println("Ini CobaThread2");
Test.istirohat(7);
}
}
public class Test
{
public static void main (String[] args)
{
Thread t1 = new CobaThread1();
Thread t2 = new Thread (new CobaThread2());
t1.start();
t2.start();
for (int ii = 0; ii<8; ii++){
System.out.println("Thread UTAMA");
istirohat(5);
}
}
public static void istirohat(int tunda)
{
try{
Thread.sleep(tunda*100);
} catch(InterruptedException e) {}
}
}
Pada bagian awal
main()
, terjadi instansiasi objek dari kelas CobaThread1
dan CobaThread2
, yaitu t1
dan t2
. Perbedaan cara penginstansian objek ini terletak pada perbedaan akses yang dimiliki oleh kelas-kelas tersebut. Supaya thread bisa bekerja, method start()
dari kelas Thread
harus dipanggil. Kelas CobaThread1
memiliki akses ke method-method yang ada di kelas Thread
karena merupakan kelas yang diturunkan langsung dari kelas Thread
. Namun, tidak demikian halnya dengan kelas CobaThread2
. Oleh karena itu, kita harus tetap membuat objek dari kelas Thread
yang menerima argumen objek CobaThread2
padaconstructor-nya, barulah start()
bisa diakses. Hal ini ditunjukkan dengan statement Thread t2 = new Thread (new CobaThread2())
.
Jadi, ketika terjadi pemanggilan method
start()
, thread yang dibuat akan langsung mengerjakan baris-baris perintah yang ada di method run()
. Jika run()
dipanggil secara langsung tanpa melalui start()
, perintah yang ada di dalam method run()
tersebut akan tetap dikerjakan, hanya saja yang mengerjakannya bukanlah thread yang dibuat tadi, melainkan thread utama.
0 komentar:
Posting Komentar
Please Give Your Feedback Or Message.
Thank You!!?