Pages

Subscribe:

Ads 468x60px

♪ ♥ Get Paid Daily - The Best Sites PTC ♥ ♪
DonkeyMails.com: No Minimum Payout
AyuWage Services - Get Paid to Visits Sites and Complete Surveys

Jumat, 10 Agustus 2012

Pembatalan Thread


Pembatalan Thread

Pembatalan thread adalah menterminasi sebuah thread sebelum tugasnya selesai. Thread yang akan dibatalkan, atau biasa disebut target thread, dapat dibatalkan dengan dua cara, yaitu asynchronous cancellation dandeferred cancellation. Pada asynchoronous cancellation, sebuah thread langsung menterminasi target thread, sedangkan pada deferred cancellationtarget thread secara berkala memeriksa apakah ia harusterminate sehingga dapat memilih saat yang aman untuk terminate.
Pada thread Java, asynchronous cancellation dilakukan dengan pemanggilan method stop(). Akan tetapi, method ini sudah di- deprecated karena terbukti tidak aman. Stop() dapat mengakibatkan terjadinyaexception ThreadDeath, yang mematikan thread-thread secara diam-diam, sehingga user mungkin saja tidak mendapat peringatan bahwa programnya tidak berjalan dengan benar.
Cara yang lebih aman untuk membatalkan thread Java adalah dengan deferred cancellation. Pembatalan ini dapat dilakukan dengan pemanggilan method interrupt(), yang akan mengeset status interupsi pada target thread. Sementara itu, target thread dapat memeriksa status interupsi-nya dengan method isInterrupted().
      
class CobaThread3 implements Runnable
{
   public void run(){
      while (true){
         System.out.println("saya thread CobaThread3");
         if (Thread.currentThread.isInterrupted())       //cek status
      break;
      }
   }
}

Suatu thread dari kelas CobaThread3 dapat diinterupsi dengan kode berikut:
      
Thread targetThread = new Thread (new CobaThread3());
targetThread.start();
targetThread.interrupt();     //set status interupsi

Ketika thread targetThread berada pada start()thread tersebut akan terus me- loop pada method run() dan melakukan pengecekan status interupsi melalui method isInterrupted(). Status interupsinya sendiri baru di-set ketika pemanggilan method interrupt(), yang ditunjukkan dengan statement targetThread.interrupt();. Setelah status interupsi di-set, ketika pengecekan status interupsi selanjutnya pada methodrun()isInterrupted() akan mengembalikan nilai boolean true, sehingga targetThread akan keluar dari method run()-nya melalui statement break dan terminate.
Selain melalui isInterrupted(), pengecekan status interupsi dapat dilakukan dengan method interrupted(). Perbedaan kedua method ini adalah isInterrupted() akan mempertahankan status interupsi, sedangkan pada interrupted(), status interupsi akan di- clear.
Thread yang statusnya sedang blocked karena melakukan operasi M/K menggunakan package java.io tidak dapat memeriksa status interupsinya sebelum operasi M/K itu selesai. Namun, melalui Java 1.4 diperkenalkanpackage java.nio yang mendukung interupsi thread yang sedang melakukan operasi M/K.

0 komentar:

Posting Komentar

Please Give Your Feedback Or Message.
Thank You!!?

Unique 1:1 Traffic Exchange

♪ ♥ Ma liste de blogs ♥ ♪

♪ ♥ Please Votes! Thanks. ♪ ♥
×