Multithreading Matakuliah Pertemuan Tahun Versi : T0984 / Algoritma dan Metode Object Oriented Programming II : 12 : 2008 : 1/0 Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu: – Mendemonstrasikan penggunaan thread dalam memproses suatu data di Java. Bina Nusantara 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 : 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) Bina Nusantara Keuntungan Mutlithreading • Keuntungan dari multithreading dikategorikan menjadi 4 bagian: Bina Nusantara Responsif Berbagi sumber daya Ekonomis Utilisasi arsitektur multiprosesor 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); Memerintahkan JVM bahwa thread siap thread.start(); untuk dijalankan. • Ketika JVM menjalankan perintah maka method run yang diimplementasi pada kelas Task dijalankan. Bina Nusantara Creating Tasks and Thread ( lanjut ..) • Contoh menggunakan Thread Bina Nusantara 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; } Mengevaluasi objek yang ditunjuk • 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 diunlock . • Object akan di-unlock ketika sebuah thread meninggalkan synchronized method. 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/SistemO perasi-4.X-1/ch11.html Bina Nusantara
© Copyright 2024 Paperzz