Saturday, February 6, 2010

MultiThreding java

Konsep MultiThreading

Thread : rangkaian dari eksekusi, dimulai dari awal hingga akhir dalam sebuah program.

Task : sebuah unit program yang mengeksekusi secara bebas dari satu bagian program
Sebuah thread menyediakan mekanisasi dari perintah yang dijalankan.
Sekumpulan intruksi yang dieksekusi secara paralel dengan metode time scale ( ketika satu prosessor melakukan perpindahan antara satu thread ke thread lainnya)

Multiprocessing merupakan penggunaan dua atau lebih CPU dalam sebuah sistem komputer.

Multitasking merupakan metode untuk menjalankan lebih dari satu proses dimana terjadi pembagian sumberdaya seperti CPU.

Multithreading adalah cara pengeksekusian yang mengizinkan beberapa thread terjadi dalam sebuah proses, saling berbagi sumber daya tetapi dapat dijalankan secara independen.

Thread sebenarnya mirip dengan proses, tapi cara berbagi sumber daya antara proses dengan thread sangat berbeda.

Multiple thread dapat dieksekusi secara paralelel pada sistem komputer.

Multiple thread dapat membuat program menjadi lebih responsive dan interactive serta meningkatkan kinerja program.


Ada 3 model Mutlithreading :


1.Many to One (Solaris Green Thread dan GNU Portable Thread)
2.One to One (Windows NT/XP/2000 , Linux, Solaris 9 dan diatasnya)
3.Many to Many (Windows NT/2000, Solaris sebelum versi 9)

Keuntungan dari multithreading dikategorikan menjadi 4 bagian:


1.Responsif
2.Berbagi sumber daya
3.Ekonomis
4.Utilisasi arsitektur multiprosesor  

Cara Membuat Task

Tasks = Objects.
Sebuah tasks harus implement interface Runnable.
Interface Runnable terdapat method run dimana wajib diimplementasikan dalam kelas yang digunakan.
Contoh :




Penggunaan dengan thread dari kelas yang telah mengimplementasi kelas Runnable :
Task task = new Task();
Thread thread = new Thread(task);
thread.start(); // thread sudah siap di jalankan

Ketika JVM menjalankan perintah maka method run yang diimplementasi pada kelas Task dijalankan.


Contoh Buat Thread




Method2 Thread


1.start() = Menjalankan thread dengan menjalankan fungsi run pada kelas yang mengimplemen interface Runnable dan di jalankan oleh JVM.

2.isAlive() = Megetahui apakah thread tersebut jalan atau tidak

3.setPriority(p : int) = set prioritas thread dari 1 – 10.

4.join() = menunggu thread ini hingga selesai.

5.sleep(t : long) = membuat thread menjadi sleep dalam ukuran milisecond.

6.yeild() = menghentikan thread sementara dan mengijinkan thread lain untuk jalan.

7.interrupt() = interupsi thread.



Thread Synchronization

Untuk mengatur multiple thread secara simultan pada resource yang sama agar tidak terjadi masalah.

Mengunakan keyword synchronized untuk mensikronisasi fungsi sehingga hanya 1 fungsi saja yang menggunakan thread dan dapat mengaksesnya.

Sebuah statement synchronized dapat digunakan untuk mendapatkan sebuah kunci dari beberapa objek, tidak hanya objek tersebut, ketika mengeksekusi blok kode dalam sebuah fungsi.

Konsep monitor : mengendalikan object dengan locking

Synchronized method dibuat dengan modifier synchronized saat deklarasi.


Bentuk umum statementnya :
synchronized (expr){ // mengevaluasi objek yg di tunjuk
statements;
}

Untuk setiap objek, sekali synchronized method dipanggil maka object akan di-lock dan tidak ada synchronized method dari object tersebut yang dapat digunakan oleh thread lain.

Thread lain yang mencoba menggunakan synchronized objek akan transisi ke waiting state sampai object di-unlock .

Object akan di-unlock ketika sebuah thread meninggalkan synchronized method.

0 comments:

Post a Comment