Langsung ke konten utama

Rekursif & Thread

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 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
Sintaknya 
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

Postingan populer dari blog ini

Pengulangan

Pengulangan        Merupakan kejadian yang berulang sampai memenuhi kondisi yang ada. Dengan adanya pengulangan, program dapat berjalan beberapa kali sesuai dengan inisialisasi jumlah literasi dan kondisi berhenti yang ditentukan.        Pengulangan ada 3 macam, yaitu Pengulangan For, Pengulangan While dan Pengulangan Do While Konsep pengulangan : -           Pengguna bekerja sedikit mungkin. -           Komputer bekerja semaksimal mungkin. Inisialisasi : Untuk memebrikan nilai awal Kondisi     : Pengecekan pengulangan dan pemberhentian pengulangan Literasi     : Proses Pengulangan Konsep Pengulangan -           Pengguna bekerja sedikit mungkin. -           Komputer bekerja s...

Algoritma Pemrograman

            Algoritma adalah langkah-langkah untuk memecahkan masalah secara terstruktur dan sistematis (Problem Solved). Sejarah Algoritma sendiri diambil dari Seorang Ilmuwan Muslim bernama Muhammad Ibnu Musa Al-khawarizmi, atau yang kita kenal dengan nama “Al-Khawarizmi”. Beliau lahir pada tahun 730 Masehi dan wafat antara tahun 835 dan 850 Masehi tepatnya di Uzbekistan. Contoh Algoritma dalam kehidupan sehari – hari diantaranya adalah cara untuk memindahkan gelas yg berisi susu ke dalam gelas berisi kopi tanpa mencampur keduanya, yaitu dengan menambahkan satu gelas kosong sehingga gelas berisi kopi terlebih dahulu dipindahkan ke dalam gelas kosong dan gelas yang berisi susu dapat menempati gelas bekas kopi. Contoh lainnya yaitu dalam mencari informasi akademik menggunakan NIM, dan lain-lain. Bahasa Pemrograman adalah bahasa buatan manusia yang digunakan untuk mengendalikan sebuah mesin sehingga dapat digunakan untuk ...