Thread & MultiThreading

Apa itu Thread ???
– Kemampuan dalam menjalankan rangkaian eksekusi dari sebuah aplikasi java,
– Setiap program java minimal memiliki satu buah thread.
– Sebuah proses pengeksekusian pada sebuah program.
Konsep Thread
Thread saling berbagi dalam pembagian program, dan dengan thread lain yang mengacu pada proses yang sama.
Fungsi Thread
1. Thread umumnya digunakan untuk pemrograman multitasking, networking, yang melibatkan pengaksesan ke sumber daya secara konkuren.
2. Untuk membuat program game dan animasi
3. Untuk menghentikan sementara suatu program (objek) yang sedang bekerja.
Status dlm Thread
+ Suspend () : berfungsi untuk menunda eksekusi dari thread yang sedang berjalan.
+ Sleep () : berfungsi untuk menempatkan thread yang sedang berjalan untuk tidur dalam beberapa waktu.
+ Resume () : hasil eksekusi dari thread yang sedang ditunda.
+ Stop () : menghentikan eksekusi dari sebuah thread; sekali thread telah dihentikan dia tidak akan memulainya lagi.

 Sebuah thread java dapat menjadi satu dari 4 kemungkinan keadaan:

* New:

Thread yang berada di status ini adalah objek dari kelas Thread yang baru dibuat, yaitu saat instansiasi objek dengan statement new. Saat thread berada di status new, belum ada sumber daya yang dialokasikan, sehingga thread belum bisa menjalankan perintah apapun.

* Runnable:

Agar thread bisa menjalankan tugasnya, method start() dari kelas Thread harus dipanggil. Ada dua hal yang terjadi saat pemanggilan method start(), yaitu alokasi memori untuk thread yang dibuat dan pemanggilan method run(). Saat method run() dipanggil, status thread berubah menjadi runnable, artinya thread tersebut sudah memenuhi syarat untuk dijalankan oleh JVM. Thread yang sedang berjalan juga berada di status runnable.

* Block:

Sebuah thread akan diblok jika menampilkan sebuah kalimat pengeblokan. Contohnya: sleep() ataupun suspend().

* Dead:

Sebuah thread dipindahkan ke keadaan dead, ketika run() method berhenti atau ketika stop() method dipanggil.

Apa MultiThreading !!

+ Multi yang berarti banyak. So… banyak thread atau task yang berjalan dalam 1 proses dan dalam waktu yang sama jalannya beberapa proses dengan urutan yang cepat (multitasking) dalam satu program.
+ Dengan banyak kontrol thread, proses dapat melakukan lebih dari satu pekerjaan pada waktu yang sama (multi tasking).
Konsep MultiThreading
– Multithreading ini merupakan teknik pada manipulasi data dimana node-node pada pohon struktur data berisi penunjuk ke node yang lebih tinggi untuk membuat lintasan struktur menjadi lebih efisien.
– Cara komputer untuk membagi-bagi pekerjaan yang dikerjakan sebagian dengan cepat sehingga menimbulkan efek seperti menjalankan beberapa task secara bersamaan walaupun otaknya hanya satu.
– Cara pengeksekusian yang mengizinkan beberapa thread terjadi dalam sebuah proses, saling berbagi sumber daya tetapi dapat dijalankan secara independen / bebas.

Keuntungan menerapkan multithreading dikategorikan menjadi 4 bagian:

1.Responsif.

Aplikasi interaktif menjadi tetap responsif meskipun sebagian dari program sedang diblok atau melakukan operasi lain yang panjang.

2.   Berbagi sumber daya.

Beberapa thread yang melakukan proses yang sama akan berbagi sumber daya. Keuntungannya adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.

3. Ekonomis.

Dengan menggunakan thread, thread bisa membagi memori dan sumber daya yang dimilikinya sehingga lebih ekonomis untuk membuat thread.

4. Utilisasi Arsitektur Multiprosesor.

Keuntungan dari multithreading bisa sangat meningkat pada arsitektur multiprocessor , dimana setiap thread dapat berjalan secara pararel di atas processor yang berbeda.

Model – model Multithreading :
1. Model Many-to-One.

Model ini memetakan beberapa thread tingkatan pengguna ke sebuah thread tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna sehingga efisien. Hanya satu thread pengguna yang dapat mengakses thread kernel pada suatu saat. Jadi Multiple thread tidak dapat berjalan secara paralel pada multiprosesor.

2. Model One-to-One.

Setiap thread tingkatan pengguna ke setiap thread. Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One.

Keuntungannya sama dengan keuntungan thread kernel. Kelemahan model ini ialah setiap pembuatan thread pengguna memerlukan tambahan thread kernel.

Karena itu, jika mengimplementasikan sistem ini, maka akan menurunkan kinerja dari sebuah aplikasi, sehingga biasanya jumlah thread dibatasi dalam sistem.

3. Model Many-to-Many.

Model ini memultipleks banyak thread tingkatan pengguna ke thread kernel yang jumlahnya sedikit atau sama dengan tingkatan pengguna. Model ini mengizinkan developer membuat thread sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu.

Keuntungan dari sistem ini ialah kernel thread yang bersangkutan dapat berjalan secara paralel pada multiprosessor.

Contoh Aplikasi :

1. Contohnya sebuah web browser mempunyai thread untuk menampilkan gambar atau tulisan sedangkan thread yang lain berfungsi sebagai penerima data dari network.
2. Kadang kala ada situasi dimana sebuah aplikasi diperlukan untuk menjalankan beberapa tugas yang serupa. Sebagai contohnya sebuah web server bisa mempunyai ratusan klien yang mengaksesnya secara concurrent . Kalau web server berjalan sebagai proses yang hanya mempunyai thread tunggal maka ia hanya bisa melayani satu klien pada satu satuan waktu. Bila ada klien lain yang ingin mengajukan permintaan maka ia harus menunggu sampai klien sebelumnya selesai dilayani.
3. Solusinya adalah dengan membuat web server menjadi multithreading . Dengan ini maka sebuah web server akan membuat thread yang akan mendengar permintaan klien, ketika permintaan lain diajukan maka web server akan menciptakan thread lain yang akan melayani permintaan tersebut.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s