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();
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;
}
{
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