download

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