Thread dalam Java
Thread itu sendiri adalah rangkaian eksekusi dari sebuah aplikasi java dan setiap program java minimal memiliki satu buah Thread. Sebuah thread bisa berada di salah satu dari 4 status, yaitu
NEW (Thread yang berada di status ini adalah objek dari kelas Thread yang baru dibuat, yaitu saat instansiasi objek dengan statement new).
RUNNABLE (Runnable. Agar thread bisa menjalankan tugasnya, method start() dari kelas Thread harus dipanggil),
BLOCKED (Sebuah thread dikatakan berstatus blocked atau terhalang jika terjadi blocking statement, misalnya pemanggilan method sleep(). sleep() adalah suatu method yang menerima argumen bertipe integer dalam bentuk milisekon.), dan
DEAD ( Sebuah thread berada di status dead bila telah keluar dari method run(). Hal ini bisa terjadi karena thread tersebut memang telah menyelesaikan pekerjaannya di method run(), maupun karena adanya pembatalan thread).
Pembentukan Thread dalam Java
• Extends class Thread
Untuk dapat menjalankan thread, kita dapat melakukannya dengan memanggil method start(). Saat start() dijalankan, maka sebenarnya method run() dari class akan dijalankan. Jadi untuk membuat thread, harus mendefinisikan method run() pada definisi class. Konstruktor dari cara ini adalah :
SubThread namaObject = new SubThread();
namaObject.start();
• Implements interface Runnable
Runnable merupakan unit abstrak, yaitu kelas yang mengimplementasikan interface ini hanya cukup mengimplementasikan fungsi run(). Dalam mengimplementasi fungsi run(), kita akan mendefinisikan instruksi yang membangun sebuah thread. Konstruktor dari cara ini adalah :
MyThread myObject= new MyThread();
Thread namaObject = new Thread(myObject);
Atau dengan cara singkat seperti :
New Thread(new ObjekRunnable());
MyThread merupakan class yang mengimplementasikan interface dari Runnable, dan object dari class MyThread akan menjadi parameter instansi object class Thread.
Synchronized
Sinkronisasi adalah method atau blok yang memiliki tambahan keyword synchronized,sehingga apabila dijalankan maka hanya satu thread pada suatu waktu yang dapat menjalankan method atau blok program. Thread lain akan menunggu thread yang sedang mengeksekusi method ini hingga selesai. Mekanisme sinkronisasi penting apabila terjadi pembagian sumber daya maupun data di antara thread-thread.
Sinkronisasi dapat dilakukan pada dua bagian yaitu
- Sinkronisasi Blok
synchronized (<object reference expression>) {
<code block>
}
- Sinkronisasi Method
synchronized TypeBalikanMethod NamaMethod ( parameter)
{
}
contoh source code Thread pada pengaplikasian pola bintang:
public class ContohThread {
public static void main(String[] args)
int batas = 9;
for (int i = 0; i< batas; i++){
for (int j = 0; j< batas; j++){
if((i==batas/2) || (j==batas/2) ||
(i==0 && j<=batas/2) ||
(i==batas-1 && j>=batas/2) ||
(j==0 && i>=batas/2) ||
(j==batas-1 && i<=batas/2)) {
System.out.print("* ");
}else{
System.out.print(" ");
}
try{
Thread.sleep(50);
}catch (InterruptedException e){
e.printStackTrace();
}
}
System.out.println();
}
}
}
Sumber :javasharee.blogspot.co.id