SlideShare una empresa de Scribd logo
1 de 28
Training Sesi #6
Java Concurrency



Petra Novandi Barus
petra.barus@gmail.com
Summary
 Concurrency
 Process and Thread
 Thread
 Sleep/Interrupt/Join
 Synchronization
 Timer



                        2
Concurrency
 Aktivitas yang dilakukan secara bersamaan
 Sebuah komputer menjalankan
 ◦ Word processor
 ◦ Music Player
 ◦ Web browser
 Sebuah music player menjalankan
 ◦ Pemutaran lagu
 ◦ Pemilihan lagu
 ◦ Visualisasi lagu
                                         3
Process and Thread
 Process
 ◦ Private resource
 Thread
 ◦ Berjalan di dalam process
 ◦ Resource sharing milik process




                                    4
Process and Thread (2)
 Mekanisme tergantung dari sistem operasi
 dan prosesor
 Pelatihan ini fokus pada Thread




                                        5
Thread
 Pembuatan thread dapat dilakukan dgn 2 cara
 ◦ Extend class java.lang.Thread
 ◦ Implement interface java.lang.Runnable
 Extend Thread
 ◦ Digunakan jika thread sederhana, tidak ada fungsi
   tambahan
 Implement Runnable
 ◦ Digunakan pada sebuah thread yang mengextend
   kelas selain Thread
 ◦ Berguna untuk kelas yg memiliki banyak fungsi
                                                       6
public class Thread1 extends Thread{
  @Override
  public void run() {
      for (int i = 0; i <= 100; i++) {

System.out.println(String.format("%d", i));
     }
  }
}




                                              7
public class Main {
  public static void main(String argv[]) {
      Thread1 thread1 = new Thread1();
      thread1.start();
  }
}




                                             8
public static void main(String argv[]) {
  Thread1 thread1 = new Thread1();
  Thread1 thread2 = new Thread1();
  Thread1 thread3 = new Thread1();
  thread1.start();
  thread2.start();
  thread3.start();
}




                                           9
thread1   thread2   thread3   output
1                             1
2                             2
                    1         1
                    2         2
          1                   1
3                             3
          2                   2
          3                   3
                    3         3
          4                   4
                    4         4
          5                   5
4                             4
                    5         5
..        ..        ..        ..

                                       10
Demo




       11
Sleep, Interrupt, Join
 Sleep
 ◦ Mekanisme untuk mensuspend aktivitas
   sebuah Thread
 ◦ Invokasi method sleep
 ◦ Input millisecond, lama waktu sleep
 ◦ Tidak ada jaminan waktu tepat
 Interrupt
 Join


                                          12
public class Thread1 extends Thread {
  @Override
  public void run() {
      for (int i = 0; i <= 100; i++) {
         System.out.println(String.format("%d", i));
         try {
             Thread.sleep(100);
         } catch (InterruptedException ex) {

Logger.getLogger(Thread1.class.getName()).log(Level.SEVERE
, null, ex);
          }
       }
   }
}




                                                         13
Sleep, Interrupt, Join (2)
 Sleep
 Interrupt
 ◦ Mekanisme untuk menginterupsi jalannya
   Thread
 ◦ Menyuruh thread mengerjakan hal lain
 ◦ Invokasi method interrupt()
 ◦ Pada thread, menjalankan fungsi yg melempar
   InterruptedException
 ◦ Atau memeriksa hasil interrupted()
 Join
                                                 14
public static void main(String argv[]) {
      Thread2 thread2 = new Thread2();
      thread2.start();
      try {
         Thread.sleep(10);
         thread2.interrupt();
      } catch (InterruptedException ex) {

      }
  }




                                            15
Sleep, Interrupt, Join (3)
 Sleep
 Interrupt
 Join
 ◦ Menunggu sebuah thread selesai bekerja




                                            16
public static void main(String argv[]) {
  Thread1 thread1 = new Thread1();
  thread1.start();
  for (int i = 0; i <= 1000; i++) {
      System.out.println(String.format("%d", i));
      if (i == 30){
          try {
             System.out.println("Joining");
             thread1.join();
          } catch (InterruptedException ex) {
          }
      }
  }
}




                                                    17
Synchronization
 Thread berkomunikasi dengan
 menggunakan shared resource
 Dapat terjadi beberapa kesalahan
 ◦ Thread interference
 ◦ Memory consistency error
 Contoh kegagalan dapat dilihat pada
 modul
 Dibutuhkan penanganan sinkronisasi

                                       18
Thread1          value Thread2            value i
Retrieve i       0                                   0
                       Retrieve i         0          0
Increment value 1                                    0
                       Decrement value    -1         0
Store value to i 1                                   1
                       Store value to i   -1        -1




                                                         19
Thread1            value Thread2            value i
Retrieve i         0                                  0
Increment value    1                                  0
Store value to i   1                                  1
                         Retrieve i         1         1
                         Decrement value    0         1
                         Store value to i   0         0




                                                          20
Synchronization
 Synchronized Method
 ◦ Blok method lain yang ingin menggunakan
   resource yang sedang digunakan
 Synchronized Statement
 ◦ Locking sebuah obyek
 ◦ Faster
 ◦ More complex




                                             21
public class Hitung {
  public int i = 0;
  public synchronized void tambah() {
      i++;
  }
  public synchronized void kurang() {
      i--;
  }
}




                                        22
public class Hitung {
  public int i = 0;
  private final Object o = new Object();
  public void tambah() {
      synchronized (o) {
         i++;
      }
  }
  public void kurang() {
      synchronized (o) {
         i--;
      }
  }
}
                                           23
Timer
 Pengeksekusian sebuah task secara
 terjadwal atau periodik
 Menggunakan Timer dan TimerTask
 TimerTask mengimplementasikan task
 Timer menjadwalkan TimerTask




                                      24
public class ContohTask extends TimerTask {
  @Override
  public void run() {
      for (int i = 0; i <= 100; i++) {
         System.out.println(String.format("%d", i));
      }
  }
}

public class Main {
  public static void main(String argv[]) {
      Timer t = new Timer();
      t.schedule(new ContohTask(), 1000);
  }
}




                                                       25
Timer (2)
 Methods
 ◦ schedule(TimerTask task, Date date)
 ◦ schedule(TimerTask task, Date firstTime, long
   period)
 ◦ schedule(TimerTask task, long delay)
 ◦ schedule(TimerTask task, long delay), long period)




                                                        26
What Else?
 Problems
 ◦ Deadlock
 ◦ Starvation
 Java-related
 ◦ High level concurrency
 ◦ Concurrent collection
 ◦ java.util.concurrent
 Concurrency
 ◦ Process
 ◦ Multiprocessor (cluster, etc)
 ◦ Parallel programming

                                   27
Question?




            28

Más contenido relacionado

Destacado

Introduction to Little Springs Design
Introduction to Little Springs DesignIntroduction to Little Springs Design
Introduction to Little Springs DesignLittle Springs Design
 
'This is the Life' Music Video Pitch
'This is the Life' Music Video Pitch'This is the Life' Music Video Pitch
'This is the Life' Music Video PitchEmma Harrison
 
SpringCM's Relationship Therapy for Sales & Legal - Episode 1
SpringCM's Relationship Therapy for Sales & Legal - Episode 1SpringCM's Relationship Therapy for Sales & Legal - Episode 1
SpringCM's Relationship Therapy for Sales & Legal - Episode 1SpringCM
 
2553 LA201 Class 1 (14 june 2010) slide
2553 LA201 Class 1 (14 june 2010) slide2553 LA201 Class 1 (14 june 2010) slide
2553 LA201 Class 1 (14 june 2010) slideChacrit Sitdhiwej
 
Memenangkan Persaingan Marketing Real-estate Di Era Digital dan MEA
Memenangkan Persaingan Marketing Real-estate Di Era Digital dan MEAMemenangkan Persaingan Marketing Real-estate Di Era Digital dan MEA
Memenangkan Persaingan Marketing Real-estate Di Era Digital dan MEAPetra Barus
 
[kierownicy 6 - en] organization and methodology of the trainingy of the trai...
[kierownicy 6 - en] organization and methodology of the trainingy of the trai...[kierownicy 6 - en] organization and methodology of the trainingy of the trai...
[kierownicy 6 - en] organization and methodology of the trainingy of the trai...AktywBHP
 
Green Collar Jobs And Your Community
Green Collar Jobs And Your CommunityGreen Collar Jobs And Your Community
Green Collar Jobs And Your Communityewesserle
 
Green Collar Jobs And Your Community
Green Collar Jobs And Your CommunityGreen Collar Jobs And Your Community
Green Collar Jobs And Your Communityewesserle
 
Learn Chinese Lesson One How Are You
Learn Chinese Lesson One How Are YouLearn Chinese Lesson One How Are You
Learn Chinese Lesson One How Are YouChineseTime School
 
Green Collar Jobs And Your Community
Green Collar Jobs And Your CommunityGreen Collar Jobs And Your Community
Green Collar Jobs And Your Communityewesserle
 
스마트폰 교통정보 매뉴얼(Tr_oasis)
스마트폰 교통정보 매뉴얼(Tr_oasis)스마트폰 교통정보 매뉴얼(Tr_oasis)
스마트폰 교통정보 매뉴얼(Tr_oasis)Jinwoo Eng.
 
2553 lx002 week 3 class (29 june 2010) slideshow
2553 lx002 week 3 class (29 june 2010) slideshow2553 lx002 week 3 class (29 june 2010) slideshow
2553 lx002 week 3 class (29 june 2010) slideshowChacrit Sitdhiwej
 
AMXC0599_Whitepaper_Research
AMXC0599_Whitepaper_ResearchAMXC0599_Whitepaper_Research
AMXC0599_Whitepaper_Researchmarieranson
 
White paper (kwarts)stofvrij werken in de bouw
White paper (kwarts)stofvrij werken in de bouwWhite paper (kwarts)stofvrij werken in de bouw
White paper (kwarts)stofvrij werken in de bouwEdwin van Enck
 

Destacado (20)

Introduction to Little Springs Design
Introduction to Little Springs DesignIntroduction to Little Springs Design
Introduction to Little Springs Design
 
Bunner
BunnerBunner
Bunner
 
'This is the Life' Music Video Pitch
'This is the Life' Music Video Pitch'This is the Life' Music Video Pitch
'This is the Life' Music Video Pitch
 
SpringCM's Relationship Therapy for Sales & Legal - Episode 1
SpringCM's Relationship Therapy for Sales & Legal - Episode 1SpringCM's Relationship Therapy for Sales & Legal - Episode 1
SpringCM's Relationship Therapy for Sales & Legal - Episode 1
 
2553 LA201 Class 1 (14 june 2010) slide
2553 LA201 Class 1 (14 june 2010) slide2553 LA201 Class 1 (14 june 2010) slide
2553 LA201 Class 1 (14 june 2010) slide
 
Android Upgrade 2.3
Android Upgrade 2.3Android Upgrade 2.3
Android Upgrade 2.3
 
评分Scores
评分Scores评分Scores
评分Scores
 
Memenangkan Persaingan Marketing Real-estate Di Era Digital dan MEA
Memenangkan Persaingan Marketing Real-estate Di Era Digital dan MEAMemenangkan Persaingan Marketing Real-estate Di Era Digital dan MEA
Memenangkan Persaingan Marketing Real-estate Di Era Digital dan MEA
 
[kierownicy 6 - en] organization and methodology of the trainingy of the trai...
[kierownicy 6 - en] organization and methodology of the trainingy of the trai...[kierownicy 6 - en] organization and methodology of the trainingy of the trai...
[kierownicy 6 - en] organization and methodology of the trainingy of the trai...
 
Green Collar Jobs And Your Community
Green Collar Jobs And Your CommunityGreen Collar Jobs And Your Community
Green Collar Jobs And Your Community
 
Adresser, kart og feil
Adresser, kart og feilAdresser, kart og feil
Adresser, kart og feil
 
Green Collar Jobs And Your Community
Green Collar Jobs And Your CommunityGreen Collar Jobs And Your Community
Green Collar Jobs And Your Community
 
My Awsome Ness
My Awsome NessMy Awsome Ness
My Awsome Ness
 
Question 2
Question 2Question 2
Question 2
 
Learn Chinese Lesson One How Are You
Learn Chinese Lesson One How Are YouLearn Chinese Lesson One How Are You
Learn Chinese Lesson One How Are You
 
Green Collar Jobs And Your Community
Green Collar Jobs And Your CommunityGreen Collar Jobs And Your Community
Green Collar Jobs And Your Community
 
스마트폰 교통정보 매뉴얼(Tr_oasis)
스마트폰 교통정보 매뉴얼(Tr_oasis)스마트폰 교통정보 매뉴얼(Tr_oasis)
스마트폰 교통정보 매뉴얼(Tr_oasis)
 
2553 lx002 week 3 class (29 june 2010) slideshow
2553 lx002 week 3 class (29 june 2010) slideshow2553 lx002 week 3 class (29 june 2010) slideshow
2553 lx002 week 3 class (29 june 2010) slideshow
 
AMXC0599_Whitepaper_Research
AMXC0599_Whitepaper_ResearchAMXC0599_Whitepaper_Research
AMXC0599_Whitepaper_Research
 
White paper (kwarts)stofvrij werken in de bouw
White paper (kwarts)stofvrij werken in de bouwWhite paper (kwarts)stofvrij werken in de bouw
White paper (kwarts)stofvrij werken in de bouw
 

Similar a Java Concurrency Training

12_Sinkronisasi.pdf
12_Sinkronisasi.pdf12_Sinkronisasi.pdf
12_Sinkronisasi.pdfJurnal IT
 
12_Sinkronisasi.pdf
12_Sinkronisasi.pdf12_Sinkronisasi.pdf
12_Sinkronisasi.pdfJurnal IT
 
pbo 4 ervan
pbo 4 ervanpbo 4 ervan
pbo 4 ervanaris
 
Dts x dicoding #5 memulai pemrograman kotlin
Dts x dicoding #5 memulai pemrograman kotlinDts x dicoding #5 memulai pemrograman kotlin
Dts x dicoding #5 memulai pemrograman kotlinAhmad Arif Faizin
 
Modul xiii dan xiv algo
Modul xiii dan xiv algoModul xiii dan xiv algo
Modul xiii dan xiv algoSTMIK AKAKOM
 
Materi pelatihan java_fundamental
Materi pelatihan java_fundamentalMateri pelatihan java_fundamental
Materi pelatihan java_fundamentalLaode ADB Ali
 
Tugas Pendahuluan Praktikum PBO Modul 8 - Multithread
Tugas Pendahuluan Praktikum PBO Modul 8 - MultithreadTugas Pendahuluan Praktikum PBO Modul 8 - Multithread
Tugas Pendahuluan Praktikum PBO Modul 8 - Multithreadmeiditiarani
 
Asyiknya belajar struktur data di planet c++
Asyiknya belajar struktur data di planet c++Asyiknya belajar struktur data di planet c++
Asyiknya belajar struktur data di planet c++Ilan Surf ﺕ
 
OOP - Konkurensi
OOP - KonkurensiOOP - Konkurensi
OOP - KonkurensiKuliahKita
 
Tugas C++ - Dian Aditya - 2009/2010
Tugas C++ - Dian Aditya - 2009/2010Tugas C++ - Dian Aditya - 2009/2010
Tugas C++ - Dian Aditya - 2009/2010Dian Aditya
 
Pemrograman java
Pemrograman javaPemrograman java
Pemrograman javaMutiara Ayu
 
2_enkapsulasi.pptx
2_enkapsulasi.pptx2_enkapsulasi.pptx
2_enkapsulasi.pptxArifRizkiM
 
9_Multithreading.pdf
9_Multithreading.pdf9_Multithreading.pdf
9_Multithreading.pdfJurnal IT
 
9_Multithreading.pdf
9_Multithreading.pdf9_Multithreading.pdf
9_Multithreading.pdfJurnal IT
 

Similar a Java Concurrency Training (20)

Jeni Intro2 Bab09 Threads
Jeni Intro2 Bab09 ThreadsJeni Intro2 Bab09 Threads
Jeni Intro2 Bab09 Threads
 
12_Sinkronisasi.pdf
12_Sinkronisasi.pdf12_Sinkronisasi.pdf
12_Sinkronisasi.pdf
 
12_Sinkronisasi.pdf
12_Sinkronisasi.pdf12_Sinkronisasi.pdf
12_Sinkronisasi.pdf
 
Materi pelatihan java fundamental
Materi pelatihan java fundamentalMateri pelatihan java fundamental
Materi pelatihan java fundamental
 
pbo 4 ervan
pbo 4 ervanpbo 4 ervan
pbo 4 ervan
 
Dts x dicoding #5 memulai pemrograman kotlin
Dts x dicoding #5 memulai pemrograman kotlinDts x dicoding #5 memulai pemrograman kotlin
Dts x dicoding #5 memulai pemrograman kotlin
 
Ii java input ouput
Ii   java input ouputIi   java input ouput
Ii java input ouput
 
Modul xiii dan xiv algo
Modul xiii dan xiv algoModul xiii dan xiv algo
Modul xiii dan xiv algo
 
Materi pelatihan java_fundamental
Materi pelatihan java_fundamentalMateri pelatihan java_fundamental
Materi pelatihan java_fundamental
 
Tugas Pendahuluan Praktikum PBO Modul 8 - Multithread
Tugas Pendahuluan Praktikum PBO Modul 8 - MultithreadTugas Pendahuluan Praktikum PBO Modul 8 - Multithread
Tugas Pendahuluan Praktikum PBO Modul 8 - Multithread
 
Asyiknya belajar struktur data di planet c++
Asyiknya belajar struktur data di planet c++Asyiknya belajar struktur data di planet c++
Asyiknya belajar struktur data di planet c++
 
11016 14 threads
11016 14 threads11016 14 threads
11016 14 threads
 
OOP - Konkurensi
OOP - KonkurensiOOP - Konkurensi
OOP - Konkurensi
 
Tugas C++ - Dian Aditya - 2009/2010
Tugas C++ - Dian Aditya - 2009/2010Tugas C++ - Dian Aditya - 2009/2010
Tugas C++ - Dian Aditya - 2009/2010
 
Modul pbo baru
Modul pbo baruModul pbo baru
Modul pbo baru
 
Pemrograman java
Pemrograman javaPemrograman java
Pemrograman java
 
Pengenalan Objek.pptx
Pengenalan Objek.pptxPengenalan Objek.pptx
Pengenalan Objek.pptx
 
2_enkapsulasi.pptx
2_enkapsulasi.pptx2_enkapsulasi.pptx
2_enkapsulasi.pptx
 
9_Multithreading.pdf
9_Multithreading.pdf9_Multithreading.pdf
9_Multithreading.pdf
 
9_Multithreading.pdf
9_Multithreading.pdf9_Multithreading.pdf
9_Multithreading.pdf
 

Más de Petra Barus

Javascript Clean Code
Javascript Clean CodeJavascript Clean Code
Javascript Clean CodePetra Barus
 
Scaling Yii2 Application
Scaling Yii2 ApplicationScaling Yii2 Application
Scaling Yii2 ApplicationPetra Barus
 
What's New In PHP7
What's New In PHP7What's New In PHP7
What's New In PHP7Petra Barus
 
PHP Indonesia Meetup - What's New in Yii2 and PHP5.5
PHP Indonesia Meetup - What's New in Yii2 and PHP5.5PHP Indonesia Meetup - What's New in Yii2 and PHP5.5
PHP Indonesia Meetup - What's New in Yii2 and PHP5.5Petra Barus
 
Starting A Web Startup - Informatika Mengajar
Starting A Web Startup - Informatika MengajarStarting A Web Startup - Informatika Mengajar
Starting A Web Startup - Informatika MengajarPetra Barus
 
Proposal Kongres Ikatan Alumni (versi 8 Oktober 2012)
Proposal Kongres Ikatan Alumni (versi 8 Oktober 2012)Proposal Kongres Ikatan Alumni (versi 8 Oktober 2012)
Proposal Kongres Ikatan Alumni (versi 8 Oktober 2012)Petra Barus
 
Proposal Kongres Ikatan Alumni IF ITB
Proposal Kongres Ikatan Alumni IF ITBProposal Kongres Ikatan Alumni IF ITB
Proposal Kongres Ikatan Alumni IF ITBPetra Barus
 
Setahun TOKI Learning Center
Setahun TOKI Learning CenterSetahun TOKI Learning Center
Setahun TOKI Learning CenterPetra Barus
 
Java User Meetup Bandung "Android" by GITS Indonesia
Java User Meetup Bandung "Android" by GITS IndonesiaJava User Meetup Bandung "Android" by GITS Indonesia
Java User Meetup Bandung "Android" by GITS IndonesiaPetra Barus
 
Java User Meetup Bandung "Android" by Agate Studio
Java User Meetup Bandung "Android" by Agate StudioJava User Meetup Bandung "Android" by Agate Studio
Java User Meetup Bandung "Android" by Agate StudioPetra Barus
 
TOKI Learning Center
TOKI Learning CenterTOKI Learning Center
TOKI Learning CenterPetra Barus
 
Taekwondo Tournament Management System
Taekwondo Tournament Management SystemTaekwondo Tournament Management System
Taekwondo Tournament Management SystemPetra Barus
 

Más de Petra Barus (12)

Javascript Clean Code
Javascript Clean CodeJavascript Clean Code
Javascript Clean Code
 
Scaling Yii2 Application
Scaling Yii2 ApplicationScaling Yii2 Application
Scaling Yii2 Application
 
What's New In PHP7
What's New In PHP7What's New In PHP7
What's New In PHP7
 
PHP Indonesia Meetup - What's New in Yii2 and PHP5.5
PHP Indonesia Meetup - What's New in Yii2 and PHP5.5PHP Indonesia Meetup - What's New in Yii2 and PHP5.5
PHP Indonesia Meetup - What's New in Yii2 and PHP5.5
 
Starting A Web Startup - Informatika Mengajar
Starting A Web Startup - Informatika MengajarStarting A Web Startup - Informatika Mengajar
Starting A Web Startup - Informatika Mengajar
 
Proposal Kongres Ikatan Alumni (versi 8 Oktober 2012)
Proposal Kongres Ikatan Alumni (versi 8 Oktober 2012)Proposal Kongres Ikatan Alumni (versi 8 Oktober 2012)
Proposal Kongres Ikatan Alumni (versi 8 Oktober 2012)
 
Proposal Kongres Ikatan Alumni IF ITB
Proposal Kongres Ikatan Alumni IF ITBProposal Kongres Ikatan Alumni IF ITB
Proposal Kongres Ikatan Alumni IF ITB
 
Setahun TOKI Learning Center
Setahun TOKI Learning CenterSetahun TOKI Learning Center
Setahun TOKI Learning Center
 
Java User Meetup Bandung "Android" by GITS Indonesia
Java User Meetup Bandung "Android" by GITS IndonesiaJava User Meetup Bandung "Android" by GITS Indonesia
Java User Meetup Bandung "Android" by GITS Indonesia
 
Java User Meetup Bandung "Android" by Agate Studio
Java User Meetup Bandung "Android" by Agate StudioJava User Meetup Bandung "Android" by Agate Studio
Java User Meetup Bandung "Android" by Agate Studio
 
TOKI Learning Center
TOKI Learning CenterTOKI Learning Center
TOKI Learning Center
 
Taekwondo Tournament Management System
Taekwondo Tournament Management SystemTaekwondo Tournament Management System
Taekwondo Tournament Management System
 

Java Concurrency Training

  • 1. Training Sesi #6 Java Concurrency Petra Novandi Barus petra.barus@gmail.com
  • 2. Summary Concurrency Process and Thread Thread Sleep/Interrupt/Join Synchronization Timer 2
  • 3. Concurrency Aktivitas yang dilakukan secara bersamaan Sebuah komputer menjalankan ◦ Word processor ◦ Music Player ◦ Web browser Sebuah music player menjalankan ◦ Pemutaran lagu ◦ Pemilihan lagu ◦ Visualisasi lagu 3
  • 4. Process and Thread Process ◦ Private resource Thread ◦ Berjalan di dalam process ◦ Resource sharing milik process 4
  • 5. Process and Thread (2) Mekanisme tergantung dari sistem operasi dan prosesor Pelatihan ini fokus pada Thread 5
  • 6. Thread Pembuatan thread dapat dilakukan dgn 2 cara ◦ Extend class java.lang.Thread ◦ Implement interface java.lang.Runnable Extend Thread ◦ Digunakan jika thread sederhana, tidak ada fungsi tambahan Implement Runnable ◦ Digunakan pada sebuah thread yang mengextend kelas selain Thread ◦ Berguna untuk kelas yg memiliki banyak fungsi 6
  • 7. public class Thread1 extends Thread{ @Override public void run() { for (int i = 0; i <= 100; i++) { System.out.println(String.format("%d", i)); } } } 7
  • 8. public class Main { public static void main(String argv[]) { Thread1 thread1 = new Thread1(); thread1.start(); } } 8
  • 9. public static void main(String argv[]) { Thread1 thread1 = new Thread1(); Thread1 thread2 = new Thread1(); Thread1 thread3 = new Thread1(); thread1.start(); thread2.start(); thread3.start(); } 9
  • 10. thread1 thread2 thread3 output 1 1 2 2 1 1 2 2 1 1 3 3 2 2 3 3 3 3 4 4 4 4 5 5 4 4 5 5 .. .. .. .. 10
  • 11. Demo 11
  • 12. Sleep, Interrupt, Join Sleep ◦ Mekanisme untuk mensuspend aktivitas sebuah Thread ◦ Invokasi method sleep ◦ Input millisecond, lama waktu sleep ◦ Tidak ada jaminan waktu tepat Interrupt Join 12
  • 13. public class Thread1 extends Thread { @Override public void run() { for (int i = 0; i <= 100; i++) { System.out.println(String.format("%d", i)); try { Thread.sleep(100); } catch (InterruptedException ex) { Logger.getLogger(Thread1.class.getName()).log(Level.SEVERE , null, ex); } } } } 13
  • 14. Sleep, Interrupt, Join (2) Sleep Interrupt ◦ Mekanisme untuk menginterupsi jalannya Thread ◦ Menyuruh thread mengerjakan hal lain ◦ Invokasi method interrupt() ◦ Pada thread, menjalankan fungsi yg melempar InterruptedException ◦ Atau memeriksa hasil interrupted() Join 14
  • 15. public static void main(String argv[]) { Thread2 thread2 = new Thread2(); thread2.start(); try { Thread.sleep(10); thread2.interrupt(); } catch (InterruptedException ex) { } } 15
  • 16. Sleep, Interrupt, Join (3) Sleep Interrupt Join ◦ Menunggu sebuah thread selesai bekerja 16
  • 17. public static void main(String argv[]) { Thread1 thread1 = new Thread1(); thread1.start(); for (int i = 0; i <= 1000; i++) { System.out.println(String.format("%d", i)); if (i == 30){ try { System.out.println("Joining"); thread1.join(); } catch (InterruptedException ex) { } } } } 17
  • 18. Synchronization Thread berkomunikasi dengan menggunakan shared resource Dapat terjadi beberapa kesalahan ◦ Thread interference ◦ Memory consistency error Contoh kegagalan dapat dilihat pada modul Dibutuhkan penanganan sinkronisasi 18
  • 19. Thread1 value Thread2 value i Retrieve i 0 0 Retrieve i 0 0 Increment value 1 0 Decrement value -1 0 Store value to i 1 1 Store value to i -1 -1 19
  • 20. Thread1 value Thread2 value i Retrieve i 0 0 Increment value 1 0 Store value to i 1 1 Retrieve i 1 1 Decrement value 0 1 Store value to i 0 0 20
  • 21. Synchronization Synchronized Method ◦ Blok method lain yang ingin menggunakan resource yang sedang digunakan Synchronized Statement ◦ Locking sebuah obyek ◦ Faster ◦ More complex 21
  • 22. public class Hitung { public int i = 0; public synchronized void tambah() { i++; } public synchronized void kurang() { i--; } } 22
  • 23. public class Hitung { public int i = 0; private final Object o = new Object(); public void tambah() { synchronized (o) { i++; } } public void kurang() { synchronized (o) { i--; } } } 23
  • 24. Timer Pengeksekusian sebuah task secara terjadwal atau periodik Menggunakan Timer dan TimerTask TimerTask mengimplementasikan task Timer menjadwalkan TimerTask 24
  • 25. public class ContohTask extends TimerTask { @Override public void run() { for (int i = 0; i <= 100; i++) { System.out.println(String.format("%d", i)); } } } public class Main { public static void main(String argv[]) { Timer t = new Timer(); t.schedule(new ContohTask(), 1000); } } 25
  • 26. Timer (2) Methods ◦ schedule(TimerTask task, Date date) ◦ schedule(TimerTask task, Date firstTime, long period) ◦ schedule(TimerTask task, long delay) ◦ schedule(TimerTask task, long delay), long period) 26
  • 27. What Else? Problems ◦ Deadlock ◦ Starvation Java-related ◦ High level concurrency ◦ Concurrent collection ◦ java.util.concurrent Concurrency ◦ Process ◦ Multiprocessor (cluster, etc) ◦ Parallel programming 27
  • 28. Question? 28