Thread
Konsep Dasar
Secara informal, proses adalah program yang sedang dieksekusi. Ada dua jenis proses, proses berat (heavyweight) atau biasa dikenal dengan proses tradisional, dan proses ringan atau kadang disebut thread.Thread saling berbagi bagian program, bagian data dan sumber daya sistem operasi dengan thread lain yang mengacu pada proses yang sama. Thread terdiri atas ID thread, program counter, himpunan register, dan stack. Dengan banyak kontrol thread proses dapat melakukan lebih dari satu pekerjaan pada waktu yang sama.
Keuntungan
- Tanggap: Multithreading mengizinkan program untuk berjalan terus walau pun pada bagian program tersebut di block atau sedang dalam keadaan menjalankan operasi yang lama/ panjang. Sebagai contoh, multithread web browser dapat mengizinkan pengguna berinteraksi dengan suatu thread ketika suatu gambar sedang diload oleh thread yang lain.
- Pembagian sumber daya: Secara default, thread membagi memori dan sumber daya dari proses. Keuntungan dari pembagian kode adalah aplikasi mempunyai perbedaan aktifitas thread dengan alokasi memori yang sama.
- Ekonomis: Mengalokasikan memori dan sumber daya untuk membuat proses adalah sangat mahal. Alternatifnya, karena thread membagi sumber daya dari proses, ini lebih ekonomis untuk membuat threads.
- Pemberdayaan arsitektur multiprosesor: Keuntungann dari multithreading dapat ditingkatkan dengan arsitektur multiprosesor, dimana setiap thread dapat jalan secara parallel pada prosesor yang berbeda. Pada arsitektur prosesor tunggal, CPU biasanya berpindah-pindah antara setiap thread dengan cepat, sehingga terdapat ilusi paralelisme, tetapi pada kenyataannya hanya satu thread yang berjalan di setiap waktu.
User Threads
User thread didukung oleh kernel dan diimplementasikan oleh thread library ditingkat pengguna. Library mendukung untuk pembentukan thread, penjadualan, dan managemen yang tidak didukung oleh kernel.Kernel Threads
Kernel thread didukung secara langsung oleh sistem operasi: pembentukan thread, penjadualan, dan managemen dilakukan oleh kernel dalam ruang kernel. Karena managemen thread telah dilakukan oleh sistem operasi, kernel thread biasanya lebih lambat untuk membuat dan mengelola daripada pengguna thread. Bagaimana pun, selama kernel mengelola thread, jika suatu thread di block tehadap sistem pemanggilan, kernel dapat menjadualkan thread yang lain dalam aplikasi untuk dieksekusi. Juga, di dalam lingkungan multiprosesor, kernel dapat menjadualkan thread dalam prosesor yang berbeda. Windows NT, Solaris, dan Digital UNIX adalah sistem operasi yang mendukung kernel thread.
Essential class di java terdiri atas 5 :
- Exeption
- Basic I/O
- Concurrency
- Regular Expressions
- The Platform Environment
yang kita bahas di sini adalah tentang "Concurrency", Concurrency adalah Sebuah sisitem yang dapat menjalankan lebih dari satu
program,
di saat bersamaan.
contoh :
pada waktu menjalankan Mozilla kita dapat membuka lebih dari satu tab, seperti pada saat kita membuka google,
kita juga dapat membuka youtube.
Execution itu ada dua yaitu :
nah pada Java ini memungkinkan kita untuk menjalankan 2 program secara bersamaan dengan menggunakan thread terssbut.
Strategi yang dapat kita lakukan untuk membuka 2 program secara bersamaan ada 2 cara yaitu :
- Directly (secara langsung) : dengan cara membuat suatu object thread.
- Indirectly (tidak secara langsung) : dengan cara memanajemen abstrac method thread, dan menjadikan
program/aplikasinya menjadi eksekutor.
berikut ini adalah contoh dalam menggunakan thread dengan strategi (Direct)
1. Menyediakan Runnable
public class HelloRunnable implements Runnable{
public void run(){
2. subclass Thread
public class HelloThread extends Thread{
public class SleepMessage{
//menunda 4 detik
Thread.sleep(4000);
dan cara untuk mengentikannya adalah dengan cara :
protected Boolean is Running=true;
public void run(){
public void cmdStop(){
Cara Menggunakan Thread di Java
Essential class di java terdiri atas 5 :
- Exeption
- Basic I/O
- Concurrency
- Regular Expressions
- The Platform Environment
yang kita bahas di sini adalah tentang "Concurrency", Concurrency adalah Sebuah sisitem yang dapat menjalankan lebih dari satu
program,
di saat bersamaan.
contoh :
pada waktu menjalankan Mozilla kita dapat membuka lebih dari satu tab, seperti pada saat kita membuka google,
kita juga dapat membuka youtube.
Execution itu ada dua yaitu :
- proses : yaitu sama seperti aplikasi/ program
- Thread : sesuatu yang mebuat agar kita dapat membuka program lebih dari satu.
nah pada Java ini memungkinkan kita untuk menjalankan 2 program secara bersamaan dengan menggunakan thread terssbut.
Strategi yang dapat kita lakukan untuk membuka 2 program secara bersamaan ada 2 cara yaitu :
- Directly (secara langsung) : dengan cara membuat suatu object thread.
- Indirectly (tidak secara langsung) : dengan cara memanajemen abstrac method thread, dan menjadikan
program/aplikasinya menjadi eksekutor.
berikut ini adalah contoh dalam menggunakan thread dengan strategi (Direct)
1. Menyediakan Runnable
public class HelloRunnable implements Runnable{
public void run(){
System.out.println(“Hello”);
}public static void main(String args[]){
( new Thread(new HelloRunnable ())).start(); }}
2. subclass Thread
public class HelloThread extends Thread{
public void run(){ System.out.println(“Hello”); }public static void main (String args[]){
(new HelloThread()).start(); }
}
Anda juga dapat menunda eksekusi dengan sleep.
public class SleepMessage{
public static void main (String args[])throws InteruptedException{
String importantInfo[] = {
};for (int i=0;i<importantInfo.length;i++){
//menunda 4 detik
Thread.sleep(4000);
}
}
dan cara untuk mengentikannya adalah dengan cara :
protected Boolean is Running=true;
public void run(){
while (is Running){
//do something
}}
public void cmdStop(){
is Running=false;
Tidak ada komentar:
Posting Komentar