Multithreading Matakuliah : T0984 / Algoritma dan Metode Object Oriented Programming II Pertemuan : 12 Tahun : 2008 Versi : 1/0
Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu: Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu: Mendemonstrasikan penggunaan thread dalam memproses suatu data di Java. Bina Nusantara
Keuntungan Mutlithreading Creating Tasks and Thread Thread Method Outline Materi Konsep Thread Multithreading Keuntungan Mutlithreading Creating Tasks and Thread Thread Method Thread Synchronization Cooperation Among Thread Bina Nusantara
Konsep Thread 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) Bina Nusantara
Konsep Thread ( lanjut .. ) 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. Bina Nusantara
Konsep Thread ( lanjut .. ) 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. Bina Nusantara
Multithreading Ada 3 model Mutlithreading : Many to One (Solaris Green Thread dan GNU Portable Thread) One to One (Windows NT/XP/2000 , Linux, Solaris 9 dan diatasnya) Many to Many (Windows NT/2000, Solaris sebelum versi 9) Bina Nusantara
Keuntungan Mutlithreading Keuntungan dari multithreading dikategorikan menjadi 4 bagian: Responsif Berbagi sumber daya Ekonomis Utilisasi arsitektur multiprosesor Bina Nusantara
Creating Tasks and Thread Tasks = Objects. Sebuah tasks harus implement interface Runnable. Interface Runnable terdapat method run dimana wajib diimplementasikan dalam kelas yang digunakan. Contoh : Bina Nusantara
Creating Tasks and Thread ( lanjut ..) Penggunaan dengan thread dari kelas yang telah mengimplementasi kelas Runnable : Task task = new Task(); Thread thread = new Thread(task); thread.start(); Ketika JVM menjalankan perintah maka method run yang diimplementasi pada kelas Task dijalankan. Memerintahkan JVM bahwa thread siap untuk dijalankan. Bina Nusantara
Creating Tasks and Thread ( lanjut ..) Contoh menggunakan Thread Bina Nusantara
Berikut method-method yang ada di kelas Thread : Thread Method Berikut method-method yang ada di kelas Thread : start() Menjalankan thread dengan menjalankan fungsi run pada kelas yang mengimplemen interface Runnable dan di jalankan oleh JVM. isAlive() Megetahui apakah thread tersebut jalan atau tidak setPriority(p : int) set prioritas thread dari 1 – 10. join() menunggu thread ini hingga selesai. sleep(t : long) membuat thread menjadi sleep dalam ukuran milisecond. yeild() menghentikan thread sementara dan mengijinkan thread lain untuk jalan. interrupt() interupsi thread. Bina Nusantara
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. Bina Nusantara
Thread Synchronization (lanjut ..) Bentuk umum statementnya : synchronized (expr){ 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. Mengevaluasi objek yang ditunjuk Bina Nusantara
Cooperation Among Thread Menggunakan interface dari java.util.concurrent.Condition Interface Condition sebagai fasilitator komunikasi antar thread. Method yang digunakan : await() Thread yang ada menunggu sampai ada kondisi/sinyal tertentu signal() membangunkan 1 thread yang menunggu signalAll() membangunkan semua thread yang menunggu Bina Nusantara
Referensi Introduction to Java Programming. 7ed. Liang. 2009. Chapter 29, hal 958 Thread Class http://en.wikipedia.org/wiki/Multithreading http://en.wikipedia.org/wiki/Thread_(computer_science) http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi-4.X-1/ch11.html Bina Nusantara