Rekursif
Metode rekursif adalah metode mengulang dirinya sendiri.
Metoda ini memanggil dirinya sendiri untuk melakukan proses berulang-ulang.
Kasus sederhana yang sering muncul adalah proses berulang-ulang menghitung
hasil factorial. Misalnya adalah factorial dari 5 adalah 1 x 2 x 3 x 4 x 5.
Dari proses itu kita ketahui bahwa untuk menghitung factorial 5 manualnya
seperti 1 x 2 = 2, lalu hasil 2 ini dikalikan 3 sehingga hasilnya adalah 6,
lalu hasil 6 ini dikalikan lagi dengan 4 sehingga hasilnya adalah 36, lalu hasil
36 ini dikalikan dengan 5 sehingga hasilnya adalah 120.
Rekursif dibagi menjadi dua :
1. Blok Rekursi : Kode program yang memuat kondisi mengulang.
2. Blok Basis : Kode program yang memuat kondisi berhenti.
Konsep Rekursif :
1. Pemisalan
2. Langkah – langkah
3. Hasil Akhir
Contoh program rekursif pada bahasa java
Ø
Program Faktorial
public class
Factorial{
public static void main (String
args[]){
Factorial f = new
Factorial();
System.out.print("6!
= ");
System.out.print(f.HitungFactorial(6));
}
public int HitungFactorial(int x){
if(x==1){
return 1;
}
else {
return x *
HitungFactorial(x-1);
}
}
}
Thread
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 (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.
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
Sintaknya
synchronized (<object reference expression>) {
synchronized (<object reference expression>) {
<code block>
}
}
·
Sinkronisasi Method
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();
}
}
}
Komentar
Posting Komentar