Sabtu, 30 April 2011

about THREAD

PENGERTIAN THREAD

Thread merupakan kemampuan yang disediakan oleh Java untuk membuat aplikasi yang tangguh, karena thread dalam program memiliki fungsi dan tugas tersendiri. Dengan adanya thread, dapat membuat program yang lebih efisien dalam hal kecepatan maupun penggunaan sumber daya, karena kita dapat membagi proses dalam aplikasi kita pada waktu yang sama. Thread umumnya digunakan untuk pemrograman multitasking, networking, yang melibatkan pengaksesan ke sumber daya secara konkuren.

Ada dua cara yang bisa digunakan dalam membuat sebuah thread, yaitu :
Membuat subclass dari thread Untuk menjalankan thread, dapat dilakukan dengan memanggil method start(). Saat start() dijalankan, maka sebenarnya method run() dari class akan dijalankan. Jadi untuk membuat thread, harus mendefinisikan method run()

Keuntungan dari THREAD :
-      Membuat aplikasi yang interaktif menjadi multithreading dapt membuat sebuah program terus berjalan meskipun sebagian dari program tersebut doblok atau melakukan operasi yang panjang. Karena itu dapt meningkatkan respons kepada pengguna. Sebagai contohnya dalam web browser yang multithreading. Sebuah thread dapt melayani permintaan pengguna sementara thread lain berusaha menampilkan image.
-      Thread berbagi memori daya dengan thread lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah mengijinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.
-      Utilisasi arsitektur multiprocessor, yaitu keuntungan dati multithreading dapat sangat meningkat pada arsitektur multiprosessor.

Penjelasan dari User THREAD
-      User Thread didukung diatas kernel dan diimplementasikan oleh thread library pada level user.
-      Library mendukung pembuatan thread, penjadwalan, dan manajemen tanpa dukungan langsung dari kernel.
-      Karena kernel tidak menyadari adanya user-level threads maka pembuatan semua thread dan penjadwalan dilakukan didalam user space tanpa intervensi dari kernel.
-      Three primary threads libraries :
·        POSIX pthread
·        Win32 thread
·        Java thread

Penjelasan dari kernel Thread :
-      Kernel thread didukung secara langsung dari system operasi. Pembuatan thread, penjadwalan, dan manajemen di lakukan oleh SO.. atau secara umun user thread lebih cepat di buat dari pada membuat kernel thread.

Penjelasan dari Model MultiThreading
a.      Thread pengguna:  Thread yang pengaturannya dilakukan oleh pustaka thread pada tingkatan pengguna. Karena pustaka yang menyediakan fasilitas untuk pembuatan dan penjadwalan threadthread pengguna cepat dibuat dan dikendalikan.
b.     Thread Kernel:  Thread yang didukung langsung oleh kernel. Pembuatan, penjadwalan dan manajemen thread dilakukan oleh kernel pada kernel space. Karena dilakukan oleh sistem operasi, proses pembuatannya akan lebih lambat jika dibandingkan dengan thread pengguna.

Model-Model MultiThreading




Model-Model MultiThreading:
a.      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 satu saat. Jadi Multiple thread tidak dapat berjalan secara paralel pada multiprosesor. Contoh: Solaris Green Threads dan GNU Portable Threads.

b.     Model One-to-One . 
Model ini memetakan 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 jumlahthread dibatasi dalam sistem. Contoh: Windows NT/XP/2000 , Linux, Solaris 9.

c.      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.


Penjelasan dari Thread Cancellation :
-      Thread cancellation adalah sebuah tugas untuk memberhentikan thread tersbut selesai. missal, JVM akan mematikan seluruh thread sebelum end.
-      Thread uang akan diberhentikan disebut targer thread.
-      2 skrenario thread cancellation:
·        Asynchronous cancellation : satu thread memberhentikan target thread seketika itu juga.
·        Deferred cancellation : target thread secara periodik dapat mengecek apakah dia harus berhenti, skrenario ini dapat member kesempatan kepada target thread untuk memberhentkan dirinya sendiri.

Penjelasan dari Thread Pool Arsitektur

Aplikasi berikut bisa mendapatkan keuntungan dari menggunakan kolam thread:
  • Sebuah aplikasi yang sangat paralel dan dapat mengirimkan sejumlah besar item pekerjaan kecil asynchronously (seperti pencarian indeks didistribusikan atau jaringan I / O).
  • Sebuah aplikasi yang menciptakan dan menghancurkan sejumlah besar thread yang masing-masing berjalan untuk waktu yang singkat. Menggunakan kolam thread dapat mengurangi kompleksitas pengelolaan benang dan overhaed terlibat dalam pembuatan benang dan kehancuran.
  • Sebuah aplikasi yang proses item pekerjaan independen di latar belakang dan secara paralel (seperti memuat banyak tab).
  • Sebuah aplikasi yang harus melakukan menunggu eksklusif pada objek kernel atau memblokir pada peristiwa masuk pada objek. Menggunakan kolam thread dapat mengurangi kompleksitas manajemen benang dan meningkatkan kinerja dengan mengurangi jumlah switch konteks.
  • Sebuah aplikasi yang menciptakan benang pelayan kustom untuk menunggu peristiwa.

Penjelasan dari LINUX Thread
-      Thread pada Linux mulai digunakan di kernel versi 2.2
-      Thread lebih dianggap sebagai tasks
-      Linux menyediakan 2 sistem call yang berhubungan dengan thread :
·        Fork (), duplikasi proses, dimana proses anakk independen
·        Clone (), mirip seperti fork(), namun selain meng-copy proses yang akan memanggilnya, method ini membuat proses baru yang berbagi addres space yang sama dengan proses yang memanggilnya, sehingga sama persis dengan induknya.
-      Context switch Linux lebih cepat


Penjelasan dari JAVA Thread


Suatu thread bisa berada pada salah satu dari status berikut :

 N ew. 
T h re a d yang berada di status ini adalah objek dari kelasThread yang baru dibuat,
yaitu saat instansiasi objek dengan statement new. Saatt hre a d berada di statusnew, belumada sumber daya yang dialokasikan, sehinggathread belum bisa menjalankan perintahapapun.
 Menjalankant hre a d. Agart hre a d bisa menjalankan tugasnya, methodstart() dari
kelasThread harus dipanggil. Ada dua hal yang terjadi saat pemanggilan method
start(), yaitu alokasi memori untukth rea d yang dibuat dan pemanggilan method
run().

 Ru n n a b le. 
Saat methodrun() dipanggil, statusth rea d berubah menjadirunnabl e, artinya
thread tersebut sudah memenuhi syarat untuk dijalankan oleh JVM. Thread yang sedang
berjalan juga dikategorikan dalam statusrunnable.
 Blocking statement dan interupsi M/K, yaitu kondisi yang menghalangi
pengeksekusiant hre a d. Ada berbagai jenis blocking statement. Yang pertama adalahpemanggilan method sleep(), suatu method yang menerima argumen bertipeint egerdalam bentuk milisekon. Argumen tersebut menunjukkan seberapa lamath rea d akan"tidur". Selainsleep(), dulunya dikenal methodsuspend(), tetapi sudahdisarankan untuk tidak digunakan lagi karena mengakibatkan terjadinyadeadlock.Di samping blocking statement, adanya interupsi M/K juga dapat menyebabkan
threadmenjadi blocked.



 Blocked.

 Statusbloc king menunjukkan bahwa sebuaht h re a d terhalang untuk menjalankan
tugasnya, sehingga dapat dikatakant hre a d tersebut terhenti untuk sementara.
Thred akanmenjad irunnable kembali jika interval methodsleep() nya sudah berakhir, ataupemanggilan methodresume() untuk mengakhiri methodsuspend(,) atau karena M/Ksudah tersedia lagi.

Tidak ada komentar:

Posting Komentar