SlideShare a Scribd company logo
JAVA ADVANCE
Multithreading
Fadilah Fahrul Hardiansyah
2017
Outline
• Multitasking
• Java Multithreading
• Garbage Collection
Multiprocessing
Multithreading
Advantages of Java Multithreading
Thread State (thread life cycle)
Thread scheduler
Creating thread
Start thread twice
Calling run() method
Sleeping a thread
Joining a thread
Naming a thread
Thread priority
Multitasking
• Saat ini komputer bukan hanya dituntut untuk dapat melakukan
banyak pekerjaan dalam waktu yang cepat. Tapi juga dituntut untuk
dapat melakukan beberapa pekerjaan sekaligus dalam satu waktu.
• Kita sering melakukan aktifitas browsing internet atau office work
pada komputer. Disaat bersamaan kita juga mendengarkan music
dengan media player di komputer, melakukan proses printing,
melakukan download, dan pekerjaan lainnya.
• Pekerjaan tersebut dapat dilakukan secara bersamaan karena
komputer memiliki kemampuan multitasking.
Multitasking
• Multitasking adalah proses mengeksekusi beberapa tugas secara
simultan (bersamaan).
• Multitasking dapat dilakukan dengan dua cara:
• Proses-based Multitasking (Multiprocessing)
• Thread-based Multitasking (Multithreading)
Multiprocessing
• Multiprocessing adalah menjalankan beberapa proses dalam waktu
bersamaan
• Yang di maksud proses disini adalah heavyweight process
• Setiap proses memiliki alamat sendiri di memori (Setiap proses
mengalokasikan area memori terpisah)
• Biaya komunikasi antar proses tinggi
• Perpindahan dari satu proses ke proses yang lain membutuhkan
beberapa waktu untuk saving dan loading register, pemetaan memori,
update list, dll
Multithreading
• Multithreading menjalankan beberapa thread dalam waktu
bersamaan
• Beberapa thread berbagi alamat memori yang sama
• Thread merupakan sub-proses yang ringan (lightweight)
• Biaya komunikasi antar thread rendah
• Perpindahan dari satu thread ke thread lain berlangsung cepat
Java Multithreading
• Apa yang dimaksud thread dalam java?
• Thread merupakan sub-proses yang ringan (lightweight)
• Merupakan unit terkecil dari sebuah proses
• Masing-masing thread bersifat independen
• Jika terjadi exception dalam sebuah thread maka thread lain tidak
terpengaruh.
Java Multithreading
• Thread berjalan didalam
sebuah proses
• Terdapat context-switching
antara thread
• Dalam sebuah OS dapat
berjalan beberapa proses
sekaligus
• Dalam Sebuah proses dapat
berjalan beberapa thread
OS
Process 1 Process 2
Process 3
t1
t2
t3
Java Multithreading
• Sub-proses seperti apa yang memerlukan thread?
• Proses download/upload data ke server
• Proses read/write data dari file yang membutuhkan waktu lama
• Proses looping yang membutuhkan waktu lama
• Proses training/learning data
• Serta proses komputasi lain yang membutuhkan waktu cukup lama
Java Multithreading
• Keuntungan penggunaan multithreading
• Tidak memblokir pengguna (doesn’t block the user) karena thread bersifat
independen dan kita dapat melakukan banyak proses dalam secara
bersamaan
• Kita dapat melakukan banyak sub-proses secara bersamaan sehingga
mempercepat waktu proses
• Threads bersifat independent, exception yang terjadi dalam sebuah thread
tidak mempengaruhi thread lain
Thread State (life cycle)
• Thread memiliki 5 state
• Namun menurut dokumentasi Sun, hanya ada 4 state dalam thread
life cycle dalam java (new, runnable, non-runnable, terminated)
• Tetapi untuk lebih memahami thread, dalam modul ini dijelaskan
dengan 5 state
Thread State (life cycle)
• Thread memiliki 5 state
• Namun menurut dokumentasi Sun, hanya ada 4 state dalam thread
life cycle dalam java (new, runnable, non-runnable, terminated)
• Tetapi untuk lebih memahami thread, dalam modul ini dijelaskan
dengan 5 state
Thread State (life cycle)
• Life cycle dari thread di control
oleh JVM (Java Virtual Machine)
• Berikut adalah state untuk
thread dalam java:
• New
• Runnable
• Running
• Non-Runnable (blocked)
• Terminated (dead)
New
Runnable
Running
Terminated
Non-runnable
(blocked)
start()
run()
sleep(), wait()
exit
resume,
sleep done
Thread State (Life Cycle)
• New
• Kondisi ketika kita telah membuat instance dari class Thread namun belum memanggil
method start()
• Runnable
• Kondisi ketika method start() telah dipanggil, tetapi thread scheduler belum memilih thread
tersebut untuk menjadi thread berjalan
• Running
• Kondisi ketika thread telah di start dan thread scheduler telah memilih thread tersebut untuk
berjalan
• Non-Runnable (blocked)
• Kondisi ketika thread masih aktif, namun tidak memenuhi syarat untuk running. Contohnya
ketika method sleep() sedang dipanggil
• Terminated (dead)
• Kondisi ketika thread berhenti berjalan. Yaitu ketika keluar dari run() method
Thread Scheduler
• Thread scheduler dalam java merupakan bagian dari JVM
• Tugas dari thread scheduler adalah menentukan thread mana yang
harus dijalankan
• Tidak ada kepastian thread mana yang akan ditunjuk oleh scheduler
untuk running
• Dalam satu waktu hanya satu thread yang dapat berjalan dalam
sebuah process
• Thread scheduler menggunakan preemptive atau time slicing
scheduling untuk menjadwalkan thread
Tread Scheduler
• Preemptive Scheduling
• Dengan penjadwalan ini, task dengan prioritas tertinggi dieksekusi hingga task
memasuki state waiting atau dead, atau hingga task dengan prioritas yang
lebih tinggi muncul
• Time Slicing Sceduling
• Task dieksekusi selama beberapa waktu yang telah ditentukan kemudian task
diberhentikan sementara dan memasuki kondisi ready state. Kemudian
scheduler memilih task lain yang akan dijalankan berikutnya (berdasarkan
prioritas atau factor lainnya)
Creating Thread
• Ada dua cara untuk membuat thread dalam java
• Menggunakan Thread class (sebagai parent)
• Menggunakan interface Runnable
class Multi extends Thread{
public void run(){
System.out.println("thread is running...");
}
public static void main(String args[]){
Multi t1=new Multi();
t1.start();
}
}
class Multi3 implements Runnable{
public void run(){
System.out.println("thread is running...");
}
public static void main(String args[]){
Multi3 m1=new Multi3();
Thread t1 =new Thread(m1);
t1.start();
}
}
Creating Thread
• Thread dengan extend Thread ataupun interface runnable, untuk
menjalankannya menggunakan method start().
• Namun bisakan kita memanggil method start lebih dari satu kali?
(untuk satu thread)
• Kita tidak misa menjalankan atau memanggil start() lebih dari satu kali
untuk sebuah thread.
Thread Method
• Sleep method
• Method sleep() yang digunakan untuk memberhentikan sementara (pause) thread
selama beberapa waktu tertentu.
• Join method
• Method join() menunggu hingga thread selesai menjalankan tugasnya dan memasuki
dead state.
• Hal ini menyebabkan thread lain tidak akan dijalankan hingga thread yang sedang
memanggil method join() berhenti.
• Method join() ada dua macam
• join()
Menunggu hingga thread berhenti
• join(long miliseconds)
Menunggu selama waktu yang telah ditentukan
Thread Method
• getName method
• Secara default setiap thread memiliki nama (thread-0, thread-1, dst)
• Method getName() digunakan untuk mendapatkan nama yang digunakan
oleh thread
• setName method
• Method setName() digunakan untuk merubah nama default yang telah
diberikan pada thread
Thread Method
• Thread Priority
• Thread juga menyediakan method untuk mensetting prioritas dari thread.
• Untuk set priority digunakan method setPriority()
• Contoh : thread1.setPriority(Thread.MAX_PRIORITY);
• Disediakan 3 konstanta untuk priority:
• public static int MAX_PRIORITY; //value = 10
• public static int NORM_PRIORITY; //
• public static int MIN_PRIORITY; //value = 1
Garbage Collection
• Merupakan cara untuk destroy object yang sudah tidak digunakan
• Pada C digunakan method free()
• Pada C++ digunakan method delete()
• Namun java melakukannya secara otomatis tanpa memanggil method
apapun.
• Keuntungan Garbage Collection pada Java
• Menyebabkan java memiliki efisiensi memory yang baik
• Dilakukan otomatis oleh JVM
Garbage Collection
• finalize()
• Merupakan method yang
dijalankan ketika garbage
collector dijalankan
• gc()
• Method gc() dalah method
yang digunakan untuk
mengaktifkan garbage
collector
• Dapat digunakan untuk
cleanup processing
public class TestGarbage1{
public void finalize(){System.out.println("object is garbage collected");}
public static void main(String args[]){
TestGarbage1 s1=new TestGarbage1();
TestGarbage1 s2=new TestGarbage1();
s1=null;
s2=null;
System.gc();
}
}
TUGAS EKSPLORASI
Tugas
1. Pelajarilah Daemon Thread, Thread Pool, Thread Group, dan
ShutdownHook!
2. Buatlah ringkasan mengenai Daemon Thread, Thread Pool, Thread
Group, dan ShutdownHook! Berikan juga contoh coding!
Referensi
• https://www.tutorialspoint.com/java/java_multithrea
ding.htm
• http://www.javatpoint.com/multithreading-in-java
Pemrograman Dasar Java Orentasi Objeck Multithreading

More Related Content

PPSX
Sistem Operasi_Thread campur sari
PDF
Threading
PPTX
presentasi sistem operasi Central Processing Unit
PPT
4.-Thread094-948w9r9023857692-njgutj.ppt
PDF
9_Multithreading.pdf
PDF
9_Multithreading.pdf
PPT
Materi pertemuan ke 4.ppt
PDF
4. Thread
Sistem Operasi_Thread campur sari
Threading
presentasi sistem operasi Central Processing Unit
4.-Thread094-948w9r9023857692-njgutj.ppt
9_Multithreading.pdf
9_Multithreading.pdf
Materi pertemuan ke 4.ppt
4. Thread

Similar to Pemrograman Dasar Java Orentasi Objeck Multithreading (20)

DOCX
Konsep dasar thread programming
PPT
Proses and thread
PPTX
Sister_3_Proses_dan_Thread merupakan bagian dari sistem operasi
PPTX
Pertemuan ke 4
PPTX
Thread
PDF
Sister 05 - proses
PPT
Pertemuan 2.1. proses pada so 2
PPT
Pertemuan 2.1. proses pada so 2
PPTX
Pengelolaan Proses.pptx
PPSX
Penjadwalan cpu blog
PDF
9 man memoriaplot
PDF
7 deadlock uplod
PPTX
Presentasi komputasi Pararel dan Terdistribusi
PDF
5 penjadwalan aplod
PPTX
ini95_20230321085805_Modul-4_Proses.pptx
PDF
Modul SO : Threads
PPT
Helen Alida Abilio - Manajemen proses
PPT
Helen Alida Abilio - Manajemen Proses
PPTX
Thread_part_of_operating_system_6thmeeting.pptx
Konsep dasar thread programming
Proses and thread
Sister_3_Proses_dan_Thread merupakan bagian dari sistem operasi
Pertemuan ke 4
Thread
Sister 05 - proses
Pertemuan 2.1. proses pada so 2
Pertemuan 2.1. proses pada so 2
Pengelolaan Proses.pptx
Penjadwalan cpu blog
9 man memoriaplot
7 deadlock uplod
Presentasi komputasi Pararel dan Terdistribusi
5 penjadwalan aplod
ini95_20230321085805_Modul-4_Proses.pptx
Modul SO : Threads
Helen Alida Abilio - Manajemen proses
Helen Alida Abilio - Manajemen Proses
Thread_part_of_operating_system_6thmeeting.pptx
Ad

More from wiwit483 (9)

PPT
Mata Kuliah Kewirausahaan_Rencana & Strategi Marketing Pert 6.ppt
PPTX
Mata Kuliah Kewirausahaan _Presentasi_Perizinan Perusahaan.pptx
PPT
Struktur Data-Pertemuan 3.ppt semester 1 Universitas Bina Insani
PPTX
Struktur Data-Pertemuan 2 Semeser 1 Universitas Bina Insani Kota Bekasi
PPTX
MATERI 1 - PENGAWALAN DAN PENGAMANAN SUARA - rev.pptx
PPTX
Materi Pengawasan Pemilu, Pilkada dan Pilgub
PPTX
Peranan_IT_dalam_bisnis Universitas Bina Insani Kota bekasi
PPTX
PERTEMUAN 1 KEWIRAUSAHAAN TEKNOLOGI INFORMASI UNIVERSITAS BINA INSANI KOTA BE...
PPTX
Pertemuan Ke 12 Kewirausahaan semester 3 Analisa Pesaing
Mata Kuliah Kewirausahaan_Rencana & Strategi Marketing Pert 6.ppt
Mata Kuliah Kewirausahaan _Presentasi_Perizinan Perusahaan.pptx
Struktur Data-Pertemuan 3.ppt semester 1 Universitas Bina Insani
Struktur Data-Pertemuan 2 Semeser 1 Universitas Bina Insani Kota Bekasi
MATERI 1 - PENGAWALAN DAN PENGAMANAN SUARA - rev.pptx
Materi Pengawasan Pemilu, Pilkada dan Pilgub
Peranan_IT_dalam_bisnis Universitas Bina Insani Kota bekasi
PERTEMUAN 1 KEWIRAUSAHAAN TEKNOLOGI INFORMASI UNIVERSITAS BINA INSANI KOTA BE...
Pertemuan Ke 12 Kewirausahaan semester 3 Analisa Pesaing
Ad

Pemrograman Dasar Java Orentasi Objeck Multithreading

  • 2. Outline • Multitasking • Java Multithreading • Garbage Collection Multiprocessing Multithreading Advantages of Java Multithreading Thread State (thread life cycle) Thread scheduler Creating thread Start thread twice Calling run() method Sleeping a thread Joining a thread Naming a thread Thread priority
  • 3. Multitasking • Saat ini komputer bukan hanya dituntut untuk dapat melakukan banyak pekerjaan dalam waktu yang cepat. Tapi juga dituntut untuk dapat melakukan beberapa pekerjaan sekaligus dalam satu waktu. • Kita sering melakukan aktifitas browsing internet atau office work pada komputer. Disaat bersamaan kita juga mendengarkan music dengan media player di komputer, melakukan proses printing, melakukan download, dan pekerjaan lainnya. • Pekerjaan tersebut dapat dilakukan secara bersamaan karena komputer memiliki kemampuan multitasking.
  • 4. Multitasking • Multitasking adalah proses mengeksekusi beberapa tugas secara simultan (bersamaan). • Multitasking dapat dilakukan dengan dua cara: • Proses-based Multitasking (Multiprocessing) • Thread-based Multitasking (Multithreading)
  • 5. Multiprocessing • Multiprocessing adalah menjalankan beberapa proses dalam waktu bersamaan • Yang di maksud proses disini adalah heavyweight process • Setiap proses memiliki alamat sendiri di memori (Setiap proses mengalokasikan area memori terpisah) • Biaya komunikasi antar proses tinggi • Perpindahan dari satu proses ke proses yang lain membutuhkan beberapa waktu untuk saving dan loading register, pemetaan memori, update list, dll
  • 6. Multithreading • Multithreading menjalankan beberapa thread dalam waktu bersamaan • Beberapa thread berbagi alamat memori yang sama • Thread merupakan sub-proses yang ringan (lightweight) • Biaya komunikasi antar thread rendah • Perpindahan dari satu thread ke thread lain berlangsung cepat
  • 7. Java Multithreading • Apa yang dimaksud thread dalam java? • Thread merupakan sub-proses yang ringan (lightweight) • Merupakan unit terkecil dari sebuah proses • Masing-masing thread bersifat independen • Jika terjadi exception dalam sebuah thread maka thread lain tidak terpengaruh.
  • 8. Java Multithreading • Thread berjalan didalam sebuah proses • Terdapat context-switching antara thread • Dalam sebuah OS dapat berjalan beberapa proses sekaligus • Dalam Sebuah proses dapat berjalan beberapa thread OS Process 1 Process 2 Process 3 t1 t2 t3
  • 9. Java Multithreading • Sub-proses seperti apa yang memerlukan thread? • Proses download/upload data ke server • Proses read/write data dari file yang membutuhkan waktu lama • Proses looping yang membutuhkan waktu lama • Proses training/learning data • Serta proses komputasi lain yang membutuhkan waktu cukup lama
  • 10. Java Multithreading • Keuntungan penggunaan multithreading • Tidak memblokir pengguna (doesn’t block the user) karena thread bersifat independen dan kita dapat melakukan banyak proses dalam secara bersamaan • Kita dapat melakukan banyak sub-proses secara bersamaan sehingga mempercepat waktu proses • Threads bersifat independent, exception yang terjadi dalam sebuah thread tidak mempengaruhi thread lain
  • 11. Thread State (life cycle) • Thread memiliki 5 state • Namun menurut dokumentasi Sun, hanya ada 4 state dalam thread life cycle dalam java (new, runnable, non-runnable, terminated) • Tetapi untuk lebih memahami thread, dalam modul ini dijelaskan dengan 5 state
  • 12. Thread State (life cycle) • Thread memiliki 5 state • Namun menurut dokumentasi Sun, hanya ada 4 state dalam thread life cycle dalam java (new, runnable, non-runnable, terminated) • Tetapi untuk lebih memahami thread, dalam modul ini dijelaskan dengan 5 state
  • 13. Thread State (life cycle) • Life cycle dari thread di control oleh JVM (Java Virtual Machine) • Berikut adalah state untuk thread dalam java: • New • Runnable • Running • Non-Runnable (blocked) • Terminated (dead) New Runnable Running Terminated Non-runnable (blocked) start() run() sleep(), wait() exit resume, sleep done
  • 14. Thread State (Life Cycle) • New • Kondisi ketika kita telah membuat instance dari class Thread namun belum memanggil method start() • Runnable • Kondisi ketika method start() telah dipanggil, tetapi thread scheduler belum memilih thread tersebut untuk menjadi thread berjalan • Running • Kondisi ketika thread telah di start dan thread scheduler telah memilih thread tersebut untuk berjalan • Non-Runnable (blocked) • Kondisi ketika thread masih aktif, namun tidak memenuhi syarat untuk running. Contohnya ketika method sleep() sedang dipanggil • Terminated (dead) • Kondisi ketika thread berhenti berjalan. Yaitu ketika keluar dari run() method
  • 15. Thread Scheduler • Thread scheduler dalam java merupakan bagian dari JVM • Tugas dari thread scheduler adalah menentukan thread mana yang harus dijalankan • Tidak ada kepastian thread mana yang akan ditunjuk oleh scheduler untuk running • Dalam satu waktu hanya satu thread yang dapat berjalan dalam sebuah process • Thread scheduler menggunakan preemptive atau time slicing scheduling untuk menjadwalkan thread
  • 16. Tread Scheduler • Preemptive Scheduling • Dengan penjadwalan ini, task dengan prioritas tertinggi dieksekusi hingga task memasuki state waiting atau dead, atau hingga task dengan prioritas yang lebih tinggi muncul • Time Slicing Sceduling • Task dieksekusi selama beberapa waktu yang telah ditentukan kemudian task diberhentikan sementara dan memasuki kondisi ready state. Kemudian scheduler memilih task lain yang akan dijalankan berikutnya (berdasarkan prioritas atau factor lainnya)
  • 17. Creating Thread • Ada dua cara untuk membuat thread dalam java • Menggunakan Thread class (sebagai parent) • Menggunakan interface Runnable class Multi extends Thread{ public void run(){ System.out.println("thread is running..."); } public static void main(String args[]){ Multi t1=new Multi(); t1.start(); } } class Multi3 implements Runnable{ public void run(){ System.out.println("thread is running..."); } public static void main(String args[]){ Multi3 m1=new Multi3(); Thread t1 =new Thread(m1); t1.start(); } }
  • 18. Creating Thread • Thread dengan extend Thread ataupun interface runnable, untuk menjalankannya menggunakan method start(). • Namun bisakan kita memanggil method start lebih dari satu kali? (untuk satu thread) • Kita tidak misa menjalankan atau memanggil start() lebih dari satu kali untuk sebuah thread.
  • 19. Thread Method • Sleep method • Method sleep() yang digunakan untuk memberhentikan sementara (pause) thread selama beberapa waktu tertentu. • Join method • Method join() menunggu hingga thread selesai menjalankan tugasnya dan memasuki dead state. • Hal ini menyebabkan thread lain tidak akan dijalankan hingga thread yang sedang memanggil method join() berhenti. • Method join() ada dua macam • join() Menunggu hingga thread berhenti • join(long miliseconds) Menunggu selama waktu yang telah ditentukan
  • 20. Thread Method • getName method • Secara default setiap thread memiliki nama (thread-0, thread-1, dst) • Method getName() digunakan untuk mendapatkan nama yang digunakan oleh thread • setName method • Method setName() digunakan untuk merubah nama default yang telah diberikan pada thread
  • 21. Thread Method • Thread Priority • Thread juga menyediakan method untuk mensetting prioritas dari thread. • Untuk set priority digunakan method setPriority() • Contoh : thread1.setPriority(Thread.MAX_PRIORITY); • Disediakan 3 konstanta untuk priority: • public static int MAX_PRIORITY; //value = 10 • public static int NORM_PRIORITY; // • public static int MIN_PRIORITY; //value = 1
  • 22. Garbage Collection • Merupakan cara untuk destroy object yang sudah tidak digunakan • Pada C digunakan method free() • Pada C++ digunakan method delete() • Namun java melakukannya secara otomatis tanpa memanggil method apapun. • Keuntungan Garbage Collection pada Java • Menyebabkan java memiliki efisiensi memory yang baik • Dilakukan otomatis oleh JVM
  • 23. Garbage Collection • finalize() • Merupakan method yang dijalankan ketika garbage collector dijalankan • gc() • Method gc() dalah method yang digunakan untuk mengaktifkan garbage collector • Dapat digunakan untuk cleanup processing public class TestGarbage1{ public void finalize(){System.out.println("object is garbage collected");} public static void main(String args[]){ TestGarbage1 s1=new TestGarbage1(); TestGarbage1 s2=new TestGarbage1(); s1=null; s2=null; System.gc(); } }
  • 25. Tugas 1. Pelajarilah Daemon Thread, Thread Pool, Thread Group, dan ShutdownHook! 2. Buatlah ringkasan mengenai Daemon Thread, Thread Pool, Thread Group, dan ShutdownHook! Berikan juga contoh coding!