SlideShare ist ein Scribd-Unternehmen logo
1 von 11
Downloaden Sie, um offline zu lesen
Pertemuan 7                                                                     Halaman 1/1




              Exception Handling and Multithreading
Pengertian Exception
       Suatu program apabila mengalami kesalahan akan menghasilkan suatu runtime
errors seperti gagal membuka file, suatu program melakukan akses diatas range array
dan lain-lain. ketika runtime errors tersebut terjadi, aplikasi akan membuat suatu
exception
Java exception merupakan instance dari class Throwable. Throwable class terdapat
dalam java.lang package


Jenis-jenis Exception

                                                RuntimeException


                                                      IOException


                                                  AWTException
                             Exception

                                                InstantiationException


                                                ...
      Throwable

                                                      LinkageError

                               Error
                                                Virtual Machine Error


                                                      AWTError

                                                ...


                  Gambar 7.1. Diagram Subclass dari Throwable class



Bahasa Pemrograman I                                    Exception Handling and Multithreading
Pertemuan 7                                                                   Halaman 2/2




§   Exception class merupakan kesalahan yang disebabkan oleh program dan kesalahan
    external. Kesalahan jenis ini dapat ditangkap dan diatasi oleh program. Exception
    terdiri dari banyak subclass yaitu seperti terlihat pada Gambar 7.1.

§   Error class merupakan class yang berhubungan dengan kesalahan pada internal
    system. Jika terjadi kesalahan jenis ini maka hanya dapat dilakukan bagaimana
    memberitahu kepada pemakai dan melakukan pengakhiran program.

Cara menggunakan Exception

Java exception dibagi menjadi tiga buah operasi yaitu :
1. Claiming an exception
   Claiming an exception dimaksudkan dengan menyatakan exception apa saja yang
   mungkin terjadi dalam suatu main() ataupun dalam method. Untuk system errors dan
   runtime errors tidak perlu dilakukan klaim karena kedua macam kesalahan ini dapat
   terjadi dimana saja.

    Untuk melakukan claiming an exception dilakukan dengan menggunakan throws
    keyword. Contoh :
    public void myMethod() throws IOException
    {
    ...
    }

    untuk melakukan klaim terhadap banyak exception dapat dilakukan dengan
    menambahkan exception dipisahkan dengan koma ( , ).

    method_declaration throws Exception1, Exception2, ... Exception n



2. Throwing an exception
   Throwing an exception dimaksudkan dengan apabila suatu kesalahan terjadi maka
   method berisi statement yang melakukan claiming an exception tersebut membuat
   suatu exception object yang dilempar ke dalam sistem.

    Untuk melakukan throwing exception kita menggunakan keyword throw didalam
    method yang telah melakukan claim exception.

    throw ExceptionObjectInstance;

3. Catching an exception
   Catching an exception dimaksudkan apabila exception object yang dilempar
   kedalam sistem akan ditangkap untuk diatasi dalam exception handler. Metode
Bahasa Pemrograman I                                  Exception Handling and Multithreading
Pertemuan 7                                                                     Halaman 3/3




   pencarian handler ini dilakukan secara backward yaitu pencarian dimulai dengan
   method yang dieksekusi sampai ke pemanggil method tersebut.

   Untuk melakukan catching an exception dapat dilakukan digunakan suatu blok try-
   catch.

   try {
       statements; // statements that may throw exceptions
   }
   catch (Exception1 ex) {
     handler for Exception1;
   }
   catch (Exception2 ex) {
       handler for Exception2;
   }
   ...
   catch(ExceptionN ex) {
       handler for ExceptionN;
   }

   jika tidak terjadi suatu exception pada statements maka blok catch akan dilewati. Jika
   ada suatu exception yang dikenali pada blok catch maka exception akan diatasi oleh
   handler statement untuk exception tersebut. Sedangkan jika ada suatu exception yang
   tidak dikenali maka java keluar dari method dan mengirim exception ke method
   sebelumnya yang memanggil method tersebut. Hal ini dilakukan sampai method
   pemanggil awal dicapai dan bila masih belum terdapat handler dari exception ini
   maka program terhenti dan menampilkan pesan ke java console.

   Exception object membawa informasi penting mengenai exception yang terjadi. untuk
   itu dapat digunakan method dibawah ini :

                  Method Name                                    Description
   public String getMessage()                    mengambil      message      lengkap    dari
                                                 throwable object
   public String toString()                      mengambil message singkat dari throwable
                                                 object
   public String getLocalizedMessage()           berisi sama dengan getMessage() apabila
                                                 tidak dilakukan override pada subclassnya
   public void printStackTrace()                 mencetak informasi dari Trowable object
                                                 dan penjejakannya




Bahasa Pemrograman I                                    Exception Handling and Multithreading
Pertemuan 7                                                                 Halaman 4/4




Contoh :
public class ExceptionTest {

    public static void main(String [] args) {
       int x = 2;
       int y = 0;
       System.out.println(x/y);
       System.out.println("this never executed");
    }
}
jika dijalankan akan menghasilkan :
java.lang.ArithmeticException: / by zero
     at ExceptionTest.main(ExceptionTest.java:6)

Setelah diberikan exception handler maka :
public class ExceptionTest {

    public static void main(String [] args) {
       int x = 2;
       int y = 0;

        try {
          System.out.println(x/y);
        } catch (ArithmeticException ex) {
          System.out.println("you divide x by 0");
        }

        System.out.println("this never executed");

    }
}

Maka hasilnya sekarang adalah :
you divide x by 0
this never executed

Membuat Exception Class

       Selain menggunakan exception class yang sudah ada pada java, exception class
dapat diturunkan menjadi suatu exception class yang baru. Cara membuatnya adalah
dengan menurunkan exception class dan meng-override method toString() atau
getLocalizedMessage().

Perhatikan contoh berikut :



Bahasa Pemrograman I                                Exception Handling and Multithreading
Pertemuan 7                                                                    Halaman 5/5




Pada ExceptionTest.java

public class ExceptionTest {

    public static void main(String [] args) {
       int x = 2;
       int y = 3;

        try {
          if((x==2) && (y==3))
            throw new MyException(x,y);

          System.out.println(x/y);
        } catch (MyException ex) {
          System.out.println(ex.toString());
        }

        System.out.println("this never executed");

    }
}

Pada MyException.java
    class MyException extends Exception {
       int x;
       int y;

        MyException(int x,int y) {
          super("MyException");
          this.x = x;
          this.y = y;
        }

        public String toString() {
          return(""+x+" divide by "+y);
        }
    }



Rethrowing Exception

       Ketika suatu exception terjadi dalam suatu method, maka alir program akan keluar
dari method jika suatu tidak ditangkap pada method tersebut. Jika ingin melakukan
beberapa operasi yang harus dilakukan sebelum keluar dari method maka exception dapat
ditangkap terlebih dahulu baru kemudian dilempar kembali ke handler yang sebenarnya.
Strukturnya adalah sebagai berikut :

try {
Bahasa Pemrograman I                                   Exception Handling and Multithreading
Pertemuan 7                                                                     Halaman 6/6




    statements;
}
catch(TheException ex) {
   perform operations before exits;
   throw ex;
}

Klausa finally

       Finally digunakan apabila menginginkan menjalankan suatu operasi tanpa
dipengaruhi apakah terjadi exception atau tidak. Dengan finally suatu operasi tidak akan
mengalami peloncatan alur.

Struktur try-cacth-finally adalah sebagai berikut :
try {
  statements;
}
catch(TheException ex) {
  handling ex statements;
}
finally {
  finalStatements;
}




Perhatikan tiga kasus berikut :
1. Jika tidak ada exception dalam blok try-catch, maka finalStatements akan selalu
   dieksekusi dan statement selanjutnya setelah blok try-catch dieksekusi.

2. Jika salah satu statement dalam blok try-catch menyebabkan exception dan ditangkap
   oleh blok catch . Statement selanjutnya dalam blok try akan diloncati, kemudian
   finalStatements. Jika exception tidak di lempar ulang dengan menggunakan keyword
   throw maka statement setelah blok try-catch akan dieksekusi. Akan tetapi sebaliknya
   maka eksekusi akan dikembalikan ke method pemanggilnya.

3. Jika salah satu statement dalam blok try-catch menyebabkan exception dan tidak ada
   blok catch yang memenuhi exception tersebut maka statement dalam blok try akan
   diloncati dan finalStatements dijalankan dan eksekusi akan dikembalikan ke method
   pemanggilnya.




Bahasa Pemrograman I                                    Exception Handling and Multithreading
Pertemuan 7                                                                    Halaman 7/7




Pengertian Thread

       Thread merupakan aliran eksekusi dari suatu task dalam program, dimana task
tersebut mempunyai awal dan akhir. dengan thread suatu task dapat berjalan secara
bersamaan yang disebut dengan multithreading.

Pada multiprocessor system thread secara bersamaan dapat dieksekusi oleh processor.
sedangkan pada single-processor system, thread berbagi CPU Time.

Multithreading dapat membuat program bekerja lebih respon dan interaktif. Thread dapat
dibuat dengan menurunkan Thread class atau melakukan implements dari interface
Runnable. Keduanya berada pada java.lang package.

Thread Class
Thread class digunakan untuk membuat suatu thread.

Di bawah ini adalah method yang digunakan untuk mengoperasikan thread

          Method                              Description
  public void run()         Digunakan untuk mengimplementasikan task
                            yang akan dikerjakan oleh thread. method ini
                            dapat di-override untuk diisi dengan code yang
                            diinginkan
  public void start()       Digunakan untuk menjalankan suatu thread
                            object
  public void stop()        Digunakan untuk menghentikan suatu thread
                            object
  public void suspend()     Digunakan untuk menghentikan sementara
                            suatu thread object
  public void resume()      Digunakan untuk mengaktifkan kembali suatu
                            thread object yang disuspend.
  public statis void        Digunakan untuk membuat thread object
  sleep(long millis)        berhenti sementara dalam waktu hitungan
  throws                    millisecond
  InterruptedException
  public void interrupt()   Digunakan untuk menginterupsi suatu thread
                            object
  public static boolean     digunakan untuk tes apakah suatu thread object

Bahasa Pemrograman I                                   Exception Handling and Multithreading
Pertemuan 7                                                                      Halaman 8/8




  interrupted()              mengalami interupsi
  public boolean             digunakan untuk menguji apakah suatu thread
  isActive()                 object masih aktif
  public void                digunakan untuk melakukan set prioritas dari
  setPriority(int p)         thread dengan range 1-10

Cara membuat thread adalah dengan menurunkan Thread class

class MyThread extends Thread {
  ...
}

Kemudian MyThread yang dibuat harus melakukan override pada method run().

Untuk membuat instance dari thread dilakukan instantiation dengan menggunakan
constructor.

Thread tersebut kemudian dijalan pada class lain sebagai client contoh :

class TestingThread {
   public static void main(String [] args) {
      MyThread theMyThread = new MyThread();
      theMyThread.start();
   }
}

Contoh menggunakan thread class :
public class TestThread {
   public static void main(String [] args) {
      PrintChar printA = new PrintChar(‘a’,100);
      PrintChar printB = new PrintChar(‘b’,100);
      PrintNum print100 = new PrintNum(100);

        print100.start();
        printA.start();
        printB.start();
    }




Pada PrintChar.java
class PrintChar extends Thread {
       private char charToPrint;
       private int times;

Bahasa Pemrograman I                                     Exception Handling and Multithreading
Pertemuan 7                                                                   Halaman 9/9




    public PrintChar(char c, int t) {
    charToPrint = c;
    times = t;
    }

    public void run() {
       for(int i=1;i<times;i++)
             System.out.print(" "+charToPrint);
    }
    }

Pada PrintNum.java
class PrintNum extends Thread {
    private int lastNum;

    public PrintNum(int t) {
    lastNum = t;
    }

    public void run() {
       for(int i=1;i<=lastNum;i++)
             System.out.print(" "+i);
    }
    }

Interface Runabble

       Jika suatu class misal class A sudah melakukan extends terhadap class lain maka
untuk membuat class A menjadi suatu thread class adalah dengan melakukan implements
dari Runnable interface.
Hampir sama dengan Thread class, class A yang melakukan implementasi Runnable
harus meng-override method run().

Thread States

Thread object mempunyai lima buah nilai state yaitu new, ready, running, inactive atau
finished.




Bahasa Pemrograman I                                  Exception Handling and Multithreading
Pertemuan 7                                                                    Halaman 10/10




                                                                           resume

     Thread
                                ready          Stop           finished
     Created


                   Start

                                    Yield
                                      or        Stop
                             Run                                Stop
                                    Time         or
       New                         Expired    Complete




                                              Suspend
                               running           or           inactive
                                               Sleep

                           Gambar 8.1. State dari Thread object

pada saat suatu thread dibuat maka thread object akan memasuki new state. Setelah
thread object dipanggil method start() maka thread akan memasuki ready state. Thread
object yang sudah ready akan berjalan setelah sistem operasi berhasil mengalokasikan
CPU time untuk thread object tersebut.

Thread object yang sudah dieksekusi dapat kembali ke ready state apabila CPU time dari
thread object tersebut habis atau memanggil method yield().

Thread object dapat memasuki inactive state apabila ada pemanggilan method suspend()
atau sleep() namun akan memasuki ready state kembali apabila method resume()
dipanggil atau waktu sleep sudah habis.

Thread object akan memasuki finished state apabila method stop() dipanggil atau run()
method sudah selesai.

Untuk mengetahui state dari thread kita dapat menggunakan method isAlive(). Jika hasil
yang didapat true maka thread dalam keadaan ready, inactive atau running state. Jika
hasil yang didapat false maka thread dalam keadaan new dan belum berjalan atau dalam
finished state.



Bahasa Pemrograman I                                     Exception Handling and Multithreading
Pertemuan 7                                                                Halaman 11/11




Thread priority

       Prioritas thread dapat diatur dengan menggunakan method setPriority(). Untuk
dapat mengetahui prioritas suatu thread dapat digunakan method getPriority(). Thread
class mempunyai 3 buah konstanta prioritas yaitu :

                  Constant                 Integer Value
         MIN_PRIORITY                             1
         NORM_PRIORITY                            5
         MAX_PRIORITY                            10

Default dari prioritas thread adalah NORM_PRIORITY. Thread dengan prioritas yang
mempunyai prioritas paling rendah akan berjalan apabila tidak ada thread dengan
prioritas paling tinggi.

Perhatikan contoh berikut :
ubah kelas ThreadTest menjadi
public class TestThread {
   public static void main(String [] args) {
      PrintChar printA = new PrintChar('a',100);
      PrintChar printB = new PrintChar('b',100);
      PrintNum print100 = new PrintNum(100);

        print100.setPriority(Thread.MIN_PRIORITY);
        printA.setPriority(Thread.NORM_PRIORITY);
        printB.setPriority(Thread.MAX_PRIORITY);

        print100.start();
        printA.start();
        printB.start();
    }
}

Synchronization
Synchronization dilakukan untuk menghindari konflik resource pada saat beberapa
thread mengakses resource yang sama. Synchronization dilakukan dengan menambah
keyword synchronized pada method yang akan dipanggil.




Bahasa Pemrograman I                                 Exception Handling and Multithreading

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (16)

29934 materi dan tugas pbo lanjut exception_
29934 materi dan tugas pbo lanjut  exception_29934 materi dan tugas pbo lanjut  exception_
29934 materi dan tugas pbo lanjut exception_
 
17728 minggu 12 penanganan kesalahan menangkap exception
17728 minggu 12 penanganan kesalahan menangkap exception17728 minggu 12 penanganan kesalahan menangkap exception
17728 minggu 12 penanganan kesalahan menangkap exception
 
Penanganan kesalahan menangkap exception
Penanganan kesalahan menangkap exceptionPenanganan kesalahan menangkap exception
Penanganan kesalahan menangkap exception
 
Modul PBO Bab-10 - Event & Exception Handling
Modul PBO Bab-10 - Event & Exception HandlingModul PBO Bab-10 - Event & Exception Handling
Modul PBO Bab-10 - Event & Exception Handling
 
6497 13 penanganan pesan exception
6497 13 penanganan pesan exception6497 13 penanganan pesan exception
6497 13 penanganan pesan exception
 
1 exception handling
1 exception handling1 exception handling
1 exception handling
 
JENI Slides-Intro1-Bab06-Struktur kontrol
JENI Slides-Intro1-Bab06-Struktur kontrolJENI Slides-Intro1-Bab06-Struktur kontrol
JENI Slides-Intro1-Bab06-Struktur kontrol
 
modul6
modul6modul6
modul6
 
PBO Pratikum 1
PBO Pratikum 1PBO Pratikum 1
PBO Pratikum 1
 
Macam macam keyword java dan penjelasanya
Macam macam keyword java dan penjelasanyaMacam macam keyword java dan penjelasanya
Macam macam keyword java dan penjelasanya
 
Modul 8 pbo
Modul 8 pboModul 8 pbo
Modul 8 pbo
 
Percabangan
PercabanganPercabangan
Percabangan
 
Laporan1
Laporan1Laporan1
Laporan1
 
[PBO] Pertemuan 10 - Exception & Error Handling
[PBO] Pertemuan 10 - Exception & Error Handling[PBO] Pertemuan 10 - Exception & Error Handling
[PBO] Pertemuan 10 - Exception & Error Handling
 
Laporan pboii 2yosa
Laporan pboii 2yosaLaporan pboii 2yosa
Laporan pboii 2yosa
 
Modul v dan vi algo
Modul v dan vi algoModul v dan vi algo
Modul v dan vi algo
 

Andere mochten auch

Kebijakan pembinaan smk 2017 (rakor lsp, 140317)
Kebijakan pembinaan smk  2017  (rakor lsp, 140317)Kebijakan pembinaan smk  2017  (rakor lsp, 140317)
Kebijakan pembinaan smk 2017 (rakor lsp, 140317)The World Bank
 
Cara Cepat Mengembangkan Solusi Java Enterprise dg MVC - Cimande 1.0 Book
Cara Cepat Mengembangkan Solusi Java Enterprise dg MVC - Cimande 1.0 BookCara Cepat Mengembangkan Solusi Java Enterprise dg MVC - Cimande 1.0 Book
Cara Cepat Mengembangkan Solusi Java Enterprise dg MVC - Cimande 1.0 BookThe World Bank
 
Codeandroid banner-1.0
Codeandroid banner-1.0Codeandroid banner-1.0
Codeandroid banner-1.0The World Bank
 
MadCodeR Development Infrastructure
MadCodeR Development InfrastructureMadCodeR Development Infrastructure
MadCodeR Development InfrastructureThe World Bank
 
Catalog ATK Evercoss Juni 2016 Small
Catalog ATK Evercoss Juni 2016 SmallCatalog ATK Evercoss Juni 2016 Small
Catalog ATK Evercoss Juni 2016 SmallThe World Bank
 
Dokumentasi open streetmap reimplementation
Dokumentasi open streetmap reimplementationDokumentasi open streetmap reimplementation
Dokumentasi open streetmap reimplementationThe World Bank
 
Buku program jTechnopreneur Meruvian v.1.0
Buku program jTechnopreneur Meruvian v.1.0Buku program jTechnopreneur Meruvian v.1.0
Buku program jTechnopreneur Meruvian v.1.0The World Bank
 
Pedoman penggunaan aplikasi untuk pengguna umum v1.0.1
Pedoman penggunaan aplikasi untuk pengguna umum v1.0.1Pedoman penggunaan aplikasi untuk pengguna umum v1.0.1
Pedoman penggunaan aplikasi untuk pengguna umum v1.0.1The World Bank
 
Implementasi clustering pada jee container
Implementasi clustering pada jee containerImplementasi clustering pada jee container
Implementasi clustering pada jee containerThe World Bank
 
Cloud Computing Overview
Cloud Computing OverviewCloud Computing Overview
Cloud Computing OverviewThe World Bank
 
Penerapan / Implementasi Tanda Tangan Digital - TTD
Penerapan / Implementasi Tanda Tangan Digital - TTDPenerapan / Implementasi Tanda Tangan Digital - TTD
Penerapan / Implementasi Tanda Tangan Digital - TTDThe World Bank
 
SoftBank ARM TechCon Keynote Masayoshi Son
SoftBank ARM TechCon Keynote Masayoshi SonSoftBank ARM TechCon Keynote Masayoshi Son
SoftBank ARM TechCon Keynote Masayoshi SonThe World Bank
 
Mengembangkan Solusi Cloud dengan PaaS
Mengembangkan Solusi Cloud dengan PaaSMengembangkan Solusi Cloud dengan PaaS
Mengembangkan Solusi Cloud dengan PaaSThe World Bank
 

Andere mochten auch (20)

Java1
Java1Java1
Java1
 
Medallion Book r1
Medallion Book r1Medallion Book r1
Medallion Book r1
 
Kebijakan pembinaan smk 2017 (rakor lsp, 140317)
Kebijakan pembinaan smk  2017  (rakor lsp, 140317)Kebijakan pembinaan smk  2017  (rakor lsp, 140317)
Kebijakan pembinaan smk 2017 (rakor lsp, 140317)
 
Java2
Java2Java2
Java2
 
Java3
Java3Java3
Java3
 
Cara Cepat Mengembangkan Solusi Java Enterprise dg MVC - Cimande 1.0 Book
Cara Cepat Mengembangkan Solusi Java Enterprise dg MVC - Cimande 1.0 BookCara Cepat Mengembangkan Solusi Java Enterprise dg MVC - Cimande 1.0 Book
Cara Cepat Mengembangkan Solusi Java Enterprise dg MVC - Cimande 1.0 Book
 
Codeandroid banner-1.0
Codeandroid banner-1.0Codeandroid banner-1.0
Codeandroid banner-1.0
 
Meruvian 4.0
Meruvian 4.0Meruvian 4.0
Meruvian 4.0
 
MadCodeR Development Infrastructure
MadCodeR Development InfrastructureMadCodeR Development Infrastructure
MadCodeR Development Infrastructure
 
Mervotura Rekantara
Mervotura RekantaraMervotura Rekantara
Mervotura Rekantara
 
Catalog ATK Evercoss Juni 2016 Small
Catalog ATK Evercoss Juni 2016 SmallCatalog ATK Evercoss Juni 2016 Small
Catalog ATK Evercoss Juni 2016 Small
 
Dokumentasi open streetmap reimplementation
Dokumentasi open streetmap reimplementationDokumentasi open streetmap reimplementation
Dokumentasi open streetmap reimplementation
 
Silabus Meruvian 2014
Silabus Meruvian 2014Silabus Meruvian 2014
Silabus Meruvian 2014
 
Buku program jTechnopreneur Meruvian v.1.0
Buku program jTechnopreneur Meruvian v.1.0Buku program jTechnopreneur Meruvian v.1.0
Buku program jTechnopreneur Meruvian v.1.0
 
Pedoman penggunaan aplikasi untuk pengguna umum v1.0.1
Pedoman penggunaan aplikasi untuk pengguna umum v1.0.1Pedoman penggunaan aplikasi untuk pengguna umum v1.0.1
Pedoman penggunaan aplikasi untuk pengguna umum v1.0.1
 
Implementasi clustering pada jee container
Implementasi clustering pada jee containerImplementasi clustering pada jee container
Implementasi clustering pada jee container
 
Cloud Computing Overview
Cloud Computing OverviewCloud Computing Overview
Cloud Computing Overview
 
Penerapan / Implementasi Tanda Tangan Digital - TTD
Penerapan / Implementasi Tanda Tangan Digital - TTDPenerapan / Implementasi Tanda Tangan Digital - TTD
Penerapan / Implementasi Tanda Tangan Digital - TTD
 
SoftBank ARM TechCon Keynote Masayoshi Son
SoftBank ARM TechCon Keynote Masayoshi SonSoftBank ARM TechCon Keynote Masayoshi Son
SoftBank ARM TechCon Keynote Masayoshi Son
 
Mengembangkan Solusi Cloud dengan PaaS
Mengembangkan Solusi Cloud dengan PaaSMengembangkan Solusi Cloud dengan PaaS
Mengembangkan Solusi Cloud dengan PaaS
 

Ähnlich wie EHHM

OOP - Exception
OOP - ExceptionOOP - Exception
OOP - ExceptionKuliahKita
 
Jeni intro1-bab12-dasar exception handling
Jeni intro1-bab12-dasar exception handlingJeni intro1-bab12-dasar exception handling
Jeni intro1-bab12-dasar exception handlingKristanto Wijaya
 
8_Penangan Eksepsi.pdf
8_Penangan Eksepsi.pdf8_Penangan Eksepsi.pdf
8_Penangan Eksepsi.pdfJurnal IT
 
8_Penangan Eksepsi.pdf
8_Penangan Eksepsi.pdf8_Penangan Eksepsi.pdf
8_Penangan Eksepsi.pdfJurnal IT
 
pbo 8 ervan
pbo 8 ervanpbo 8 ervan
pbo 8 ervanaris
 
PBO - Pert 8, Mengenal dan Memahami Konsep Jump Pada Perulangan dan Percabang...
PBO - Pert 8, Mengenal dan Memahami Konsep Jump Pada Perulangan dan Percabang...PBO - Pert 8, Mengenal dan Memahami Konsep Jump Pada Perulangan dan Percabang...
PBO - Pert 8, Mengenal dan Memahami Konsep Jump Pada Perulangan dan Percabang...RUDISELAMAT2
 
2_Struktur_kontrol.pdf
2_Struktur_kontrol.pdf2_Struktur_kontrol.pdf
2_Struktur_kontrol.pdfJurnal IT
 
2_Struktur_kontrol.pdf
2_Struktur_kontrol.pdf2_Struktur_kontrol.pdf
2_Struktur_kontrol.pdfJurnal IT
 
Laporan Modul 1 Praktikum Pemrograman Berbasis Objek
Laporan Modul 1 Praktikum Pemrograman Berbasis ObjekLaporan Modul 1 Praktikum Pemrograman Berbasis Objek
Laporan Modul 1 Praktikum Pemrograman Berbasis ObjekKuncara Laksana
 
Modul6 1225443461187631-8
Modul6 1225443461187631-8Modul6 1225443461187631-8
Modul6 1225443461187631-8aan_junior147
 
Jeni intro1-bab06-struktur kontrol
Jeni intro1-bab06-struktur kontrolJeni intro1-bab06-struktur kontrol
Jeni intro1-bab06-struktur kontrolKristanto Wijaya
 
Modul praktikum java pemrograman berorientasi objek
Modul praktikum java pemrograman berorientasi objekModul praktikum java pemrograman berorientasi objek
Modul praktikum java pemrograman berorientasi objekimam arifin
 
06.77 JAVA SE_adapter classes
06.77 JAVA SE_adapter classes06.77 JAVA SE_adapter classes
06.77 JAVA SE_adapter classesJefri Fahrian
 

Ähnlich wie EHHM (18)

OOP - Exception
OOP - ExceptionOOP - Exception
OOP - Exception
 
Jeni intro1-bab12-dasar exception handling
Jeni intro1-bab12-dasar exception handlingJeni intro1-bab12-dasar exception handling
Jeni intro1-bab12-dasar exception handling
 
8_Penangan Eksepsi.pdf
8_Penangan Eksepsi.pdf8_Penangan Eksepsi.pdf
8_Penangan Eksepsi.pdf
 
8_Penangan Eksepsi.pdf
8_Penangan Eksepsi.pdf8_Penangan Eksepsi.pdf
8_Penangan Eksepsi.pdf
 
18314 minggu 12 penanganan kesalahan menangkap exception
18314 minggu 12 penanganan kesalahan menangkap exception18314 minggu 12 penanganan kesalahan menangkap exception
18314 minggu 12 penanganan kesalahan menangkap exception
 
pbo 8 ervan
pbo 8 ervanpbo 8 ervan
pbo 8 ervan
 
PBO - Pert 8, Mengenal dan Memahami Konsep Jump Pada Perulangan dan Percabang...
PBO - Pert 8, Mengenal dan Memahami Konsep Jump Pada Perulangan dan Percabang...PBO - Pert 8, Mengenal dan Memahami Konsep Jump Pada Perulangan dan Percabang...
PBO - Pert 8, Mengenal dan Memahami Konsep Jump Pada Perulangan dan Percabang...
 
16. error handling
16. error handling16. error handling
16. error handling
 
2_Struktur_kontrol.pdf
2_Struktur_kontrol.pdf2_Struktur_kontrol.pdf
2_Struktur_kontrol.pdf
 
2_Struktur_kontrol.pdf
2_Struktur_kontrol.pdf2_Struktur_kontrol.pdf
2_Struktur_kontrol.pdf
 
Laporan Modul 1 Praktikum Pemrograman Berbasis Objek
Laporan Modul 1 Praktikum Pemrograman Berbasis ObjekLaporan Modul 1 Praktikum Pemrograman Berbasis Objek
Laporan Modul 1 Praktikum Pemrograman Berbasis Objek
 
Modul6 1225443461187631-8
Modul6 1225443461187631-8Modul6 1225443461187631-8
Modul6 1225443461187631-8
 
Jeni Intro1 Bab06 Struktur Kontrol
Jeni Intro1 Bab06 Struktur KontrolJeni Intro1 Bab06 Struktur Kontrol
Jeni Intro1 Bab06 Struktur Kontrol
 
Jeni intro1-bab06-struktur kontrol
Jeni intro1-bab06-struktur kontrolJeni intro1-bab06-struktur kontrol
Jeni intro1-bab06-struktur kontrol
 
Ii java input ouput
Ii   java input ouputIi   java input ouput
Ii java input ouput
 
Modul praktikum java pemrograman berorientasi objek
Modul praktikum java pemrograman berorientasi objekModul praktikum java pemrograman berorientasi objek
Modul praktikum java pemrograman berorientasi objek
 
06.77 JAVA SE_adapter classes
06.77 JAVA SE_adapter classes06.77 JAVA SE_adapter classes
06.77 JAVA SE_adapter classes
 
Jeni Intro2 Bab11 Applet
Jeni Intro2 Bab11 AppletJeni Intro2 Bab11 Applet
Jeni Intro2 Bab11 Applet
 

Mehr von The World Bank

Meruvian MDP 2.0.1 2017
Meruvian MDP 2.0.1 2017Meruvian MDP 2.0.1 2017
Meruvian MDP 2.0.1 2017The World Bank
 
G20 digital-economy-ministerial-declaration-english-version
G20 digital-economy-ministerial-declaration-english-versionG20 digital-economy-ministerial-declaration-english-version
G20 digital-economy-ministerial-declaration-english-versionThe World Bank
 
Inpres nomer 9 tahun 2016 - SMK
Inpres nomer 9 tahun 2016 - SMKInpres nomer 9 tahun 2016 - SMK
Inpres nomer 9 tahun 2016 - SMKThe World Bank
 
JBoss Fuse vs Tibco Matrix
JBoss Fuse vs Tibco MatrixJBoss Fuse vs Tibco Matrix
JBoss Fuse vs Tibco MatrixThe World Bank
 
VSphere Integrated Containers v3.0
VSphere Integrated Containers v3.0VSphere Integrated Containers v3.0
VSphere Integrated Containers v3.0The World Bank
 
KPTIK Maestro internship program
KPTIK Maestro internship programKPTIK Maestro internship program
KPTIK Maestro internship programThe World Bank
 
MOU 5 Menteri Terkait Vokasi dan SMK 4 5919
MOU 5 Menteri Terkait Vokasi dan SMK 4 5919MOU 5 Menteri Terkait Vokasi dan SMK 4 5919
MOU 5 Menteri Terkait Vokasi dan SMK 4 5919The World Bank
 
PKS 5 Menteri terkait Vokasi dan SMK
PKS 5 Menteri terkait Vokasi dan SMKPKS 5 Menteri terkait Vokasi dan SMK
PKS 5 Menteri terkait Vokasi dan SMKThe World Bank
 
Instruktur Teman Sebaya (edit 28nov)
Instruktur Teman Sebaya (edit 28nov)Instruktur Teman Sebaya (edit 28nov)
Instruktur Teman Sebaya (edit 28nov)The World Bank
 
Kebijakan pengembangan pendidikan kejuruan (its, 23 nov 2016) compress
Kebijakan pengembangan pendidikan kejuruan (its, 23 nov 2016) compressKebijakan pengembangan pendidikan kejuruan (its, 23 nov 2016) compress
Kebijakan pengembangan pendidikan kejuruan (its, 23 nov 2016) compressThe World Bank
 
Instruktur Teman Sebaya
Instruktur Teman SebayaInstruktur Teman Sebaya
Instruktur Teman SebayaThe World Bank
 
Docker QNAP Container Station
Docker QNAP Container StationDocker QNAP Container Station
Docker QNAP Container StationThe World Bank
 
Penetrasi & Prilaku Pengguna Internet Indonesia 2016
Penetrasi & Prilaku Pengguna Internet Indonesia 2016Penetrasi & Prilaku Pengguna Internet Indonesia 2016
Penetrasi & Prilaku Pengguna Internet Indonesia 2016The World Bank
 
Tindak Lanjut Program Pendidikan Vokasi 30 Agustus 2016
Tindak Lanjut Program Pendidikan Vokasi 30 Agustus 2016Tindak Lanjut Program Pendidikan Vokasi 30 Agustus 2016
Tindak Lanjut Program Pendidikan Vokasi 30 Agustus 2016The World Bank
 
Paparan Aspek Hukum Tanda Tangan Digital
Paparan Aspek Hukum Tanda Tangan Digital Paparan Aspek Hukum Tanda Tangan Digital
Paparan Aspek Hukum Tanda Tangan Digital The World Bank
 
Presentasi Seminar TTD Aplikasi Perkantoran
Presentasi Seminar TTD Aplikasi PerkantoranPresentasi Seminar TTD Aplikasi Perkantoran
Presentasi Seminar TTD Aplikasi PerkantoranThe World Bank
 
Tata Cara mendapatkan Sertifikat Digital v2 1
Tata Cara mendapatkan Sertifikat Digital v2 1Tata Cara mendapatkan Sertifikat Digital v2 1
Tata Cara mendapatkan Sertifikat Digital v2 1The World Bank
 
Tanda Tangan Digital Perbankan
Tanda Tangan Digital PerbankanTanda Tangan Digital Perbankan
Tanda Tangan Digital PerbankanThe World Bank
 

Mehr von The World Bank (20)

Meruvian MDP 2.0.1 2017
Meruvian MDP 2.0.1 2017Meruvian MDP 2.0.1 2017
Meruvian MDP 2.0.1 2017
 
G20 digital-economy-ministerial-declaration-english-version
G20 digital-economy-ministerial-declaration-english-versionG20 digital-economy-ministerial-declaration-english-version
G20 digital-economy-ministerial-declaration-english-version
 
Virtualization
VirtualizationVirtualization
Virtualization
 
Inpres nomer 9 tahun 2016 - SMK
Inpres nomer 9 tahun 2016 - SMKInpres nomer 9 tahun 2016 - SMK
Inpres nomer 9 tahun 2016 - SMK
 
JBoss Fuse vs Tibco Matrix
JBoss Fuse vs Tibco MatrixJBoss Fuse vs Tibco Matrix
JBoss Fuse vs Tibco Matrix
 
VSphere Integrated Containers v3.0
VSphere Integrated Containers v3.0VSphere Integrated Containers v3.0
VSphere Integrated Containers v3.0
 
KPTIK Maestro internship program
KPTIK Maestro internship programKPTIK Maestro internship program
KPTIK Maestro internship program
 
MOU 5 Menteri Terkait Vokasi dan SMK 4 5919
MOU 5 Menteri Terkait Vokasi dan SMK 4 5919MOU 5 Menteri Terkait Vokasi dan SMK 4 5919
MOU 5 Menteri Terkait Vokasi dan SMK 4 5919
 
PKS 5 Menteri terkait Vokasi dan SMK
PKS 5 Menteri terkait Vokasi dan SMKPKS 5 Menteri terkait Vokasi dan SMK
PKS 5 Menteri terkait Vokasi dan SMK
 
Design Sprint Methods
Design Sprint MethodsDesign Sprint Methods
Design Sprint Methods
 
Instruktur Teman Sebaya (edit 28nov)
Instruktur Teman Sebaya (edit 28nov)Instruktur Teman Sebaya (edit 28nov)
Instruktur Teman Sebaya (edit 28nov)
 
Kebijakan pengembangan pendidikan kejuruan (its, 23 nov 2016) compress
Kebijakan pengembangan pendidikan kejuruan (its, 23 nov 2016) compressKebijakan pengembangan pendidikan kejuruan (its, 23 nov 2016) compress
Kebijakan pengembangan pendidikan kejuruan (its, 23 nov 2016) compress
 
Instruktur Teman Sebaya
Instruktur Teman SebayaInstruktur Teman Sebaya
Instruktur Teman Sebaya
 
Docker QNAP Container Station
Docker QNAP Container StationDocker QNAP Container Station
Docker QNAP Container Station
 
Penetrasi & Prilaku Pengguna Internet Indonesia 2016
Penetrasi & Prilaku Pengguna Internet Indonesia 2016Penetrasi & Prilaku Pengguna Internet Indonesia 2016
Penetrasi & Prilaku Pengguna Internet Indonesia 2016
 
Tindak Lanjut Program Pendidikan Vokasi 30 Agustus 2016
Tindak Lanjut Program Pendidikan Vokasi 30 Agustus 2016Tindak Lanjut Program Pendidikan Vokasi 30 Agustus 2016
Tindak Lanjut Program Pendidikan Vokasi 30 Agustus 2016
 
Paparan Aspek Hukum Tanda Tangan Digital
Paparan Aspek Hukum Tanda Tangan Digital Paparan Aspek Hukum Tanda Tangan Digital
Paparan Aspek Hukum Tanda Tangan Digital
 
Presentasi Seminar TTD Aplikasi Perkantoran
Presentasi Seminar TTD Aplikasi PerkantoranPresentasi Seminar TTD Aplikasi Perkantoran
Presentasi Seminar TTD Aplikasi Perkantoran
 
Tata Cara mendapatkan Sertifikat Digital v2 1
Tata Cara mendapatkan Sertifikat Digital v2 1Tata Cara mendapatkan Sertifikat Digital v2 1
Tata Cara mendapatkan Sertifikat Digital v2 1
 
Tanda Tangan Digital Perbankan
Tanda Tangan Digital PerbankanTanda Tangan Digital Perbankan
Tanda Tangan Digital Perbankan
 

EHHM

  • 1. Pertemuan 7 Halaman 1/1 Exception Handling and Multithreading Pengertian Exception Suatu program apabila mengalami kesalahan akan menghasilkan suatu runtime errors seperti gagal membuka file, suatu program melakukan akses diatas range array dan lain-lain. ketika runtime errors tersebut terjadi, aplikasi akan membuat suatu exception Java exception merupakan instance dari class Throwable. Throwable class terdapat dalam java.lang package Jenis-jenis Exception RuntimeException IOException AWTException Exception InstantiationException ... Throwable LinkageError Error Virtual Machine Error AWTError ... Gambar 7.1. Diagram Subclass dari Throwable class Bahasa Pemrograman I Exception Handling and Multithreading
  • 2. Pertemuan 7 Halaman 2/2 § Exception class merupakan kesalahan yang disebabkan oleh program dan kesalahan external. Kesalahan jenis ini dapat ditangkap dan diatasi oleh program. Exception terdiri dari banyak subclass yaitu seperti terlihat pada Gambar 7.1. § Error class merupakan class yang berhubungan dengan kesalahan pada internal system. Jika terjadi kesalahan jenis ini maka hanya dapat dilakukan bagaimana memberitahu kepada pemakai dan melakukan pengakhiran program. Cara menggunakan Exception Java exception dibagi menjadi tiga buah operasi yaitu : 1. Claiming an exception Claiming an exception dimaksudkan dengan menyatakan exception apa saja yang mungkin terjadi dalam suatu main() ataupun dalam method. Untuk system errors dan runtime errors tidak perlu dilakukan klaim karena kedua macam kesalahan ini dapat terjadi dimana saja. Untuk melakukan claiming an exception dilakukan dengan menggunakan throws keyword. Contoh : public void myMethod() throws IOException { ... } untuk melakukan klaim terhadap banyak exception dapat dilakukan dengan menambahkan exception dipisahkan dengan koma ( , ). method_declaration throws Exception1, Exception2, ... Exception n 2. Throwing an exception Throwing an exception dimaksudkan dengan apabila suatu kesalahan terjadi maka method berisi statement yang melakukan claiming an exception tersebut membuat suatu exception object yang dilempar ke dalam sistem. Untuk melakukan throwing exception kita menggunakan keyword throw didalam method yang telah melakukan claim exception. throw ExceptionObjectInstance; 3. Catching an exception Catching an exception dimaksudkan apabila exception object yang dilempar kedalam sistem akan ditangkap untuk diatasi dalam exception handler. Metode Bahasa Pemrograman I Exception Handling and Multithreading
  • 3. Pertemuan 7 Halaman 3/3 pencarian handler ini dilakukan secara backward yaitu pencarian dimulai dengan method yang dieksekusi sampai ke pemanggil method tersebut. Untuk melakukan catching an exception dapat dilakukan digunakan suatu blok try- catch. try { statements; // statements that may throw exceptions } catch (Exception1 ex) { handler for Exception1; } catch (Exception2 ex) { handler for Exception2; } ... catch(ExceptionN ex) { handler for ExceptionN; } jika tidak terjadi suatu exception pada statements maka blok catch akan dilewati. Jika ada suatu exception yang dikenali pada blok catch maka exception akan diatasi oleh handler statement untuk exception tersebut. Sedangkan jika ada suatu exception yang tidak dikenali maka java keluar dari method dan mengirim exception ke method sebelumnya yang memanggil method tersebut. Hal ini dilakukan sampai method pemanggil awal dicapai dan bila masih belum terdapat handler dari exception ini maka program terhenti dan menampilkan pesan ke java console. Exception object membawa informasi penting mengenai exception yang terjadi. untuk itu dapat digunakan method dibawah ini : Method Name Description public String getMessage() mengambil message lengkap dari throwable object public String toString() mengambil message singkat dari throwable object public String getLocalizedMessage() berisi sama dengan getMessage() apabila tidak dilakukan override pada subclassnya public void printStackTrace() mencetak informasi dari Trowable object dan penjejakannya Bahasa Pemrograman I Exception Handling and Multithreading
  • 4. Pertemuan 7 Halaman 4/4 Contoh : public class ExceptionTest { public static void main(String [] args) { int x = 2; int y = 0; System.out.println(x/y); System.out.println("this never executed"); } } jika dijalankan akan menghasilkan : java.lang.ArithmeticException: / by zero at ExceptionTest.main(ExceptionTest.java:6) Setelah diberikan exception handler maka : public class ExceptionTest { public static void main(String [] args) { int x = 2; int y = 0; try { System.out.println(x/y); } catch (ArithmeticException ex) { System.out.println("you divide x by 0"); } System.out.println("this never executed"); } } Maka hasilnya sekarang adalah : you divide x by 0 this never executed Membuat Exception Class Selain menggunakan exception class yang sudah ada pada java, exception class dapat diturunkan menjadi suatu exception class yang baru. Cara membuatnya adalah dengan menurunkan exception class dan meng-override method toString() atau getLocalizedMessage(). Perhatikan contoh berikut : Bahasa Pemrograman I Exception Handling and Multithreading
  • 5. Pertemuan 7 Halaman 5/5 Pada ExceptionTest.java public class ExceptionTest { public static void main(String [] args) { int x = 2; int y = 3; try { if((x==2) && (y==3)) throw new MyException(x,y); System.out.println(x/y); } catch (MyException ex) { System.out.println(ex.toString()); } System.out.println("this never executed"); } } Pada MyException.java class MyException extends Exception { int x; int y; MyException(int x,int y) { super("MyException"); this.x = x; this.y = y; } public String toString() { return(""+x+" divide by "+y); } } Rethrowing Exception Ketika suatu exception terjadi dalam suatu method, maka alir program akan keluar dari method jika suatu tidak ditangkap pada method tersebut. Jika ingin melakukan beberapa operasi yang harus dilakukan sebelum keluar dari method maka exception dapat ditangkap terlebih dahulu baru kemudian dilempar kembali ke handler yang sebenarnya. Strukturnya adalah sebagai berikut : try { Bahasa Pemrograman I Exception Handling and Multithreading
  • 6. Pertemuan 7 Halaman 6/6 statements; } catch(TheException ex) { perform operations before exits; throw ex; } Klausa finally Finally digunakan apabila menginginkan menjalankan suatu operasi tanpa dipengaruhi apakah terjadi exception atau tidak. Dengan finally suatu operasi tidak akan mengalami peloncatan alur. Struktur try-cacth-finally adalah sebagai berikut : try { statements; } catch(TheException ex) { handling ex statements; } finally { finalStatements; } Perhatikan tiga kasus berikut : 1. Jika tidak ada exception dalam blok try-catch, maka finalStatements akan selalu dieksekusi dan statement selanjutnya setelah blok try-catch dieksekusi. 2. Jika salah satu statement dalam blok try-catch menyebabkan exception dan ditangkap oleh blok catch . Statement selanjutnya dalam blok try akan diloncati, kemudian finalStatements. Jika exception tidak di lempar ulang dengan menggunakan keyword throw maka statement setelah blok try-catch akan dieksekusi. Akan tetapi sebaliknya maka eksekusi akan dikembalikan ke method pemanggilnya. 3. Jika salah satu statement dalam blok try-catch menyebabkan exception dan tidak ada blok catch yang memenuhi exception tersebut maka statement dalam blok try akan diloncati dan finalStatements dijalankan dan eksekusi akan dikembalikan ke method pemanggilnya. Bahasa Pemrograman I Exception Handling and Multithreading
  • 7. Pertemuan 7 Halaman 7/7 Pengertian Thread Thread merupakan aliran eksekusi dari suatu task dalam program, dimana task tersebut mempunyai awal dan akhir. dengan thread suatu task dapat berjalan secara bersamaan yang disebut dengan multithreading. Pada multiprocessor system thread secara bersamaan dapat dieksekusi oleh processor. sedangkan pada single-processor system, thread berbagi CPU Time. Multithreading dapat membuat program bekerja lebih respon dan interaktif. Thread dapat dibuat dengan menurunkan Thread class atau melakukan implements dari interface Runnable. Keduanya berada pada java.lang package. Thread Class Thread class digunakan untuk membuat suatu thread. Di bawah ini adalah method yang digunakan untuk mengoperasikan thread Method Description public void run() Digunakan untuk mengimplementasikan task yang akan dikerjakan oleh thread. method ini dapat di-override untuk diisi dengan code yang diinginkan public void start() Digunakan untuk menjalankan suatu thread object public void stop() Digunakan untuk menghentikan suatu thread object public void suspend() Digunakan untuk menghentikan sementara suatu thread object public void resume() Digunakan untuk mengaktifkan kembali suatu thread object yang disuspend. public statis void Digunakan untuk membuat thread object sleep(long millis) berhenti sementara dalam waktu hitungan throws millisecond InterruptedException public void interrupt() Digunakan untuk menginterupsi suatu thread object public static boolean digunakan untuk tes apakah suatu thread object Bahasa Pemrograman I Exception Handling and Multithreading
  • 8. Pertemuan 7 Halaman 8/8 interrupted() mengalami interupsi public boolean digunakan untuk menguji apakah suatu thread isActive() object masih aktif public void digunakan untuk melakukan set prioritas dari setPriority(int p) thread dengan range 1-10 Cara membuat thread adalah dengan menurunkan Thread class class MyThread extends Thread { ... } Kemudian MyThread yang dibuat harus melakukan override pada method run(). Untuk membuat instance dari thread dilakukan instantiation dengan menggunakan constructor. Thread tersebut kemudian dijalan pada class lain sebagai client contoh : class TestingThread { public static void main(String [] args) { MyThread theMyThread = new MyThread(); theMyThread.start(); } } Contoh menggunakan thread class : public class TestThread { public static void main(String [] args) { PrintChar printA = new PrintChar(‘a’,100); PrintChar printB = new PrintChar(‘b’,100); PrintNum print100 = new PrintNum(100); print100.start(); printA.start(); printB.start(); } Pada PrintChar.java class PrintChar extends Thread { private char charToPrint; private int times; Bahasa Pemrograman I Exception Handling and Multithreading
  • 9. Pertemuan 7 Halaman 9/9 public PrintChar(char c, int t) { charToPrint = c; times = t; } public void run() { for(int i=1;i<times;i++) System.out.print(" "+charToPrint); } } Pada PrintNum.java class PrintNum extends Thread { private int lastNum; public PrintNum(int t) { lastNum = t; } public void run() { for(int i=1;i<=lastNum;i++) System.out.print(" "+i); } } Interface Runabble Jika suatu class misal class A sudah melakukan extends terhadap class lain maka untuk membuat class A menjadi suatu thread class adalah dengan melakukan implements dari Runnable interface. Hampir sama dengan Thread class, class A yang melakukan implementasi Runnable harus meng-override method run(). Thread States Thread object mempunyai lima buah nilai state yaitu new, ready, running, inactive atau finished. Bahasa Pemrograman I Exception Handling and Multithreading
  • 10. Pertemuan 7 Halaman 10/10 resume Thread ready Stop finished Created Start Yield or Stop Run Stop Time or New Expired Complete Suspend running or inactive Sleep Gambar 8.1. State dari Thread object pada saat suatu thread dibuat maka thread object akan memasuki new state. Setelah thread object dipanggil method start() maka thread akan memasuki ready state. Thread object yang sudah ready akan berjalan setelah sistem operasi berhasil mengalokasikan CPU time untuk thread object tersebut. Thread object yang sudah dieksekusi dapat kembali ke ready state apabila CPU time dari thread object tersebut habis atau memanggil method yield(). Thread object dapat memasuki inactive state apabila ada pemanggilan method suspend() atau sleep() namun akan memasuki ready state kembali apabila method resume() dipanggil atau waktu sleep sudah habis. Thread object akan memasuki finished state apabila method stop() dipanggil atau run() method sudah selesai. Untuk mengetahui state dari thread kita dapat menggunakan method isAlive(). Jika hasil yang didapat true maka thread dalam keadaan ready, inactive atau running state. Jika hasil yang didapat false maka thread dalam keadaan new dan belum berjalan atau dalam finished state. Bahasa Pemrograman I Exception Handling and Multithreading
  • 11. Pertemuan 7 Halaman 11/11 Thread priority Prioritas thread dapat diatur dengan menggunakan method setPriority(). Untuk dapat mengetahui prioritas suatu thread dapat digunakan method getPriority(). Thread class mempunyai 3 buah konstanta prioritas yaitu : Constant Integer Value MIN_PRIORITY 1 NORM_PRIORITY 5 MAX_PRIORITY 10 Default dari prioritas thread adalah NORM_PRIORITY. Thread dengan prioritas yang mempunyai prioritas paling rendah akan berjalan apabila tidak ada thread dengan prioritas paling tinggi. Perhatikan contoh berikut : ubah kelas ThreadTest menjadi public class TestThread { public static void main(String [] args) { PrintChar printA = new PrintChar('a',100); PrintChar printB = new PrintChar('b',100); PrintNum print100 = new PrintNum(100); print100.setPriority(Thread.MIN_PRIORITY); printA.setPriority(Thread.NORM_PRIORITY); printB.setPriority(Thread.MAX_PRIORITY); print100.start(); printA.start(); printB.start(); } } Synchronization Synchronization dilakukan untuk menghindari konflik resource pada saat beberapa thread mengakses resource yang sama. Synchronization dilakukan dengan menambah keyword synchronized pada method yang akan dipanggil. Bahasa Pemrograman I Exception Handling and Multithreading