Beberapa minggu kebelakang saya dapet materi tentang Thread nih, karena saya di suruh cari materi tentang Thread sama dosennya, maka saya cari tuh gi google. lumayan susah juga carinya karena kebanyakan sumbernya bahasa inggris. tanpa perlu banyak menghayal kita langsung ajah ke pembahasan.
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
Sintaknya
synchronized (<object reference expression>) {
<code block>
}
Sintaknya
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();
}
}
}
Selamat Moncoba.,
special Thanks to Allah swt, Muhammad Barja Sanjaya and many more.