Jumat, 15 Agustus 2014

Multithreading

Multithreading
Thread Concept
          Thread: urutan eksekusi dari awal sampai akhir dalam sebuah program.
          Task: unit program yang mengeksekusi secara independen dari satu bagian dari program tersebut.
          Sebuah thread memberikan mekanisasi perintah dieksekusi.
          Satu set instruksi dieksekusi secara paralel dengan metode skala waktu (ketika satu prosesor melakukan perpindahan dari satu thread ke thread lain.)
          Multiprocessing adalah penggunaan dua atau lebih CPU dalam sebuah sistem komputer.
          Multitasking adalah metode untuk menjalankan lebih dari satu proses di mana ada adalah berbagi sumber daya seperti CPU.
          Multithreading adalah cara yang memungkinkan pelaksanaan beberapa thread terjadi dalam sebuah proses, berbagi sumber daya tetapi dapat dijalankan secara independen.
          Thread sebenarnya mirip dengan proses, tapi cara berbagi sumber daya di antara proses dengan thread yang sangat berbeda.
          Beberapa benang dapat dijalankan secara paralel pada sistem komputer.
          Beberapa benang dapat membuat program lebih responsif dan interaktif dan untuk meningkatkan kinerja program.
Multithreading
          Ada tiga model multithreading
1.       Many to One (Solaris Green Thread and GNU Portable Thread)
2.       One to One (Windows NT/XP/2000 , Linux, Solaris 9 and above)
3.       Many to Many (Windows NT/2000, Solaris prior versions of nine )

Keuntungan menggunakan Multithreading
          keuntungan dari multithreading dikategorikan menjadi empat bagian:
§  Responsive
§  Sharing resources
§  Ekonomis
§  Pemanfaatan arsitektur multiprosesor
Creating Tasks and Thread
          Tasks = Objects.
          tugas A harus menerapkan interface Runnable.
          Interface Runnable metode run yang harus dilaksanakan dalam kelas yang digunakan.
          Example :

          Gunakan benang dari kelas yang sudah mengimplementasikan Runnable Kelas:
                                                Task task = new Task();
                                                Thread thread = new Thread(task);
                                                thread.start();
          Ketika JVM menjalankan perintah, maka metode run diimplementasikan dalam tugas Kelas yang ditangani.
          Contoh penggunaan Thread

Thread Method
          Metode berikut metode dalam kelas Thread:
§  start() à Mulai thread dengan fungsi berjalan di kelas. mengimplementasikan interface Runnable dan dijalankan oleh JVM.
§  isAlive() à mengetahui apakah thread berjalan atau tidak.
§  setPriority(p : int) à benang prioritas diatur dari 1 sampai 10.
§  join() à menunggu beberapa thread untuk menyelesaikan.
§  sleep(t : long) à membuat thread untuk tidur dalam ukuran milidetik.
§  yeild() à menghentikan thread sementara dan memungkinkan thread lain ke jalan.
§  interrupt() à interrupts thread.
Thread Synchronization
untuk mengatur beberapa thread secara bersamaan pada sumber daya yang sama untuk mencegah masalah
• Gunakan kata kunci disinkronkan dengan fungsi sinkronisasi sehingga hanya satu fungsi yang menggunakan benang dan bisa mengaksesnya
• Sebuah pernyataan disinkronisasi dapat digunakan untuk mendapatkan kunci dari objek tertentu, bukan hanya objek, ketika menjalankan blok kode dalam suatu fungsi
• Konsep memantau: mengontrol obyek dengan mengunci
• metode Synchronized dibuat dengan pengubah disinkronkan selama deklarasi
• bentuk umum dari pernyataan:
synchronized (expr)
{
                statements;
}
          untuk setiap objek, disinkronisasi metode pernah disebut maka objek akan kunci dan tidak ada metode disinkronkan dari objek yang dapat digunakan oleh thread lain.
          Thread lain yang mencoba menggunakan objek disinkronisasi akan transisi ke negara menunggu sampai disinkronkan membuka objek.
          objek akan dibuka saat thread meninggalkan metode disinkronkan.
Kerjasama antara Thread
          menggunakan antarmuka java.util.concurrent.Condition
          Antarmuka Kondisi sebagai penyedia fasilitas komunikasi antara benang.
          Metode yang digunakan:
§  await() à menunggu thread sampai ada kondisi sinyal tertentu
§  signal() à membangkitkan salah satu thread
§  signalAll() à wake up all threads waiting


Tidak ada komentar:

Posting Komentar