Langsung ke konten utama

Thread dalam Java

Apa itu Kelas Thread Java
Salah satu fitur yang tertanam pada environment Java yaitu dukungan untuk menggunakan threadThread memungkinkan sebuah aplikasi Javauntuk melakukan banyak aktifitas/operasi secara simultan (serentak). Dengan menggunakannya secara benar, thread memungkinkan User Interface sebuah aplikasi tetap responsif saat aplikasi tersebut melakukan operasi yang memakan waktu lama seperti komunikasi networking atau perhitungan-perhitungan yang kompleks. 
Thread adalah unit fundamental dari eksekusi program. Setiap aplikasi minimal memiliki sebuah thread untuk menjalankan kode. Aplikasi yang memiliki dua thread atau lebih, biasa disebut dengan multithreaded application
Fungsi seperti ini sering kita butuhkan dalam membuat program aplikasi/game nantinya. Misalnya, sebuah thread yang bertugas menjalankan operasi penghitungan nilai/skor game, kemudian thread yang lainnnya menjalankan operasi pendeteksi tabrakan antara obyek-obyek pada game. Kedua thread tersebut berjalan bersamaan dalam melakukan tugasnya masing-masing. 
Setiap thread memiliki sebuah konteks yang berhubungan dengannya.Konteks tersebut memuat informasi tentang thread, seperti alamat dari instruksi yang sedang dieksekusi dan storage untuk variabel-variabel lokal. Konteks tersebut akan terupdate begitu thread dieksekusi. Konteksjuga menyimpan state dari thread
Thread bisa dalam state sebagai berikut: 
  • Running, saat dimana thread sedang menjalankan kode. 
  • Ready, saat dimana thread siap untuk mengeksekusi kode. 
  • Suspended, saat dimana thread sedang menunggu external event. Contohnya: menunggu data yang datang dari device lain. Begitu data datang dan event terjadi (dilakukan), maka thread kembali ke state ready.
  • Terminated, saat dimana thread selesai mengeksekusi kode.
Thread yang dalam keadaan (state) running, ready atau suspended, adalah thread yang hidup (live thread). Sedangkan thread yang berstatus terminated adalah thread mati (dead thread).

Meskipun sebuah aplikasi boleh memiliki banyak thread, namun perlu memperhatikan kemampuan device yang ada (mobile device). Yang pada umumnya hanya memiliki kemampuan dan jumlah prosesor yang kecil (biasanya hanya mampu satu atau dua saja) untuk melakukan eksekusi kode.

Obyek Thread 
Thread hanya bisa digunakan dalam sebuah aplikasi tidak bisa berdiri menjadi sebuah obyek tersendiri. Java runtime menghubungkan setiap live thread sebagai instance dari kelas java.lang.Thread. Kelas inilah yang digunakan untuk menjalankan thread baru serta mengambil dan mengeset prioritas dari thread itu sendiri. Pada J2ME Thread hanya mendukung method-method berikut: 
  • activeCount() 
Mengembalikan nilai sekarang yang aktif pada virtual mesin. 
  • currentThread() 
Akan mengembalikan nilai object uang sekarang. 
  • getPriority() 
Akan mengembalikan Prioritas thread. 
  • isAlive() 
Mengecek aktifnya thread. 
  • join() : Menuggu hingga thread ini selesai. 

  • run() 
jika thread ini dibangun harus menggunakan implementasi Runnable dan menyantumkan object run maka otomatis object Runable akan memanggil method run. 
  • setPriority() 
Merubah prioritas pada thread ini. 
  • sleep() 
Untuk melaksanakan berhenti sementara dalam betuk milidetik. 
  • start() 
Thread ini mengawali eksekusi. 
  • yield() 
Thread ini untuk menunda dan mengijinkan thread lain untuk mengeksekusi.

Menggunakan Thread 
Untuk diketahui, ada 2 cara dalam menggunakan class Thread ini:
  1. Mendeklarasikan sebuah kelas yang menjadi turunan dari kelas Thread.
Sub kelas yang dibuat harus mengoverride method run dari kelas Thread, baru kemudian kita bisa membuat sebuah instance dari kelas tersebut untuk dialokasikan dan dijalankan. Berikut contoh Thread yang akan melakukan penghitungan scoring.
Pendeklarasian Class :
Membuat obyek ThreadSkoring dan menjalankannya:
  1. Mendeklarasikan sebuah kelas yang mengimplementasikan interface Runnable. 
    Kelas baru yang dibuat harus mengoverride method run dari kelas Runnable, baru kemudian sebuah instance dari kelas tersebut bisa dialokasikan dan dijalankan melalui argumen saat membuat obyek baru dari kelas Thread.
Pendeklarasian kelas:

class RunSkoring extends Thread {
RunSkoring() { 
public void run() { 
// operasi menghitung skor game 
. . . 
}

Membuat obyek RunSkoring dan menjalankannya:
RunSkoring p = new RunSkoring(); 
new Thread(p).start();

Menghentikan Thread


public class MyThread implements Runnable {
private boolean selesai = false;
public void run()
{
while( !selesai ){
// lakukan operasi yang diperlukan
}
}
public void selesai(){
selesai = true;
}
}
Kelas di atas akan terus melakukan operasi pada method run() sampai kita memanggil method selesai() yang sudah kita definisikan di dalam kelas itu. 







Komentar

Postingan populer dari blog ini

Program Exception Pada Java

Di dalam Lab, kami juga mempelajari sekilas tentang program exception: Exception  merupakan suatu kejadian yang tidak biasa atau event abnormal yang muncul ketika sedang menjalankan program. Exception merupakan runtime error. Ketika Exception muncul, maka akan melempar  sebuah obyek Exception, jika obyek yang dilempar ini tidak ditangani atau ditangkap maka akan mengakibatkan program determinasi (berhenti), hal ini dapat menyebabkan program menjadi tidak handal. Untuk mengatasi hal ini dibutuhkan sesuatu untuk menangani Exception. Error dan Exception Classes Seluruh exceptions adalah subclasses, baik secara langsung maupun tidak langsung, dari sebuah root class Throwable. Kemudian, dalam class ini terdapat dua kategori umum : Error class dan Exception class. Exception class menunjukkan kondisi yang dapat diterima oleh user program. Umumnya hal tersebut disebabkan oleh beberapa kesalahan pada kode program. Contoh dari exceptions adalah pembagian oleh 0 dan error di luar ...

Java Collection

C ollection adalah sekumpulan interface dan class yang sangat berguna dalam pengolahan variable / objek di Java.  Suatu objek collection Java dapat menyimpan beberapa elemen objek dalam suatu kesatuan group.  Dengan pengelompokan dalam group tersebut kita mendapatkan manfaat berikut : menyimpan elemen dengan urutan tertentu,  mengambil kembali elemen tersebut dengan index atau dengan berbagai metode yang spesifik,  memanipulasi data terutama agregasi dari elemen-elemen yang ada seperti penjumlahan,  dan berbagai transformasi bermanfaat lainnya. Beberapa Pengertian: 1.  Map dan List Map dan List merupakan sebuah interface yang digunakan untuk menerapkan Collection. Map dan List yang dibuat dapat memiliki cara implementasi yang berbeda, misalnya dengan menggunakan Array, menggunakan key hash. Apa perbedaan map dan list? Map dapat memiliki Key custom (Object, String, Integer, dll) sedangkan List hanya berupa sebuah daftar 2. ...