Total Tayangan Halaman

Selasa, 20 Desember 2011

THREAD pada JAVA

Sebuah thread merupakan sebuah pengontrol aliran program. Untuk lebih mudahnya, bayangkanlah thread sebagai sebuah proses yang akan dieksekusi didalam sebuah program tertentu. Penggunaan sistem operasi modern saat ini telah mendukung kemampuan untuk menjalankan beberapa program. Misalnya, pada saat Anda mengetik sebuah dokumen di komputer Anda dengan menggunakan text editor, dalam waktu yang bersamaan Anda juga dapat mendengarkan musik, dan surfing lewat internet di PC Anda. Sistem operasi yang telah terinstal dalam computer Anda itulah yang memperbolehkan Anda untuk menjalankan multitaskting. Seperti itu juga sebuah program (ibaratkan di PC Anda), ia juga dapat mengeksekusi beberapa proses secara bersama-sama(ibaratkan beberapa aplikasi berbeda yang bekerja pada PC Anda). Sebuah contoh aplikasi adalah HotJava browser yang memperbolehkan Anda untuk browsing terhadap suatu page, bersamaan dengan mendownload object yang lain, misalnya gambar, memainkan animasi, dan juga file audio pada saat yang bersamaan.

Sebuah thread memungkinkan untuk memiliki beberapa state:
1.   Running
Sebuah thread yang pada saat ini sedang dieksekusi dan didalam control dari CPU.
2.   Ready to run
Thread yang sudah siap untuk dieksekusi, tetapi masih belum ada kesempatan untuk melakukannya.
3.   Resumed
Setelah sebelumnya di block atau diberhentikan sementara, state ini kemudian siap untuk dijalankan.
4.   Suspended
Sebuah thread yang berhenti sementara, dan kemudian memperbolehkan CPU untuk menjalankan thread lain bekerja.
5.   Blocked
Sebuah thread yang di-block merupakan sebuah thread yang tidak mampu berjalan, karena ia akan menunggu sebuah resource tersedia atau sebuah event terjadi.

Class Thread
1.    Constructor
Thread memiliki delapan constructor. Marilah kita lihat bersama beberapa constructor tersebut.
Thread Constructors
Thread()
Membuat sebuah object Thread yang baru.
Thread(String name)
Membuat sebuah object thread dengan memberikan penamaan yang spesifik.
Thread(Runnable target)
Membuat sebuah object Thread yang baru berdasar pada object Runnable. Target menyatakan sebuah object dimana method run dipanggil.


Thread(Runnable target, String name)
Membuat sebuah object Thread yang baru dengan nama yang spesifik dan berdasarkan pada object Runnable.
2.   Constants
Class Thread juga menyediakan beberapa constants sebagai nilai prioritas. Tabel berikut ini adalah rangkuman dari class Thread.
Thread Constants
public final static int MAX_PRIORITY Nilai prioritas maksimum, 10
public final static int MIN_PRIORITY Nilai prioritas minimum, 1.
public final static int NORM_PRIORITY Nilai default prioritas, 5.
3.   Methods
Method- method inilah yang disediakan dalam class Thread.
Thread Methods
public static Thread currentThread() Mengembalikan sebuah reference kepada thread yang sedang berjalan.
public final String getName() Mengembalikan nama dari thread.
public final void setName(String name) Mengulang pemberian nama thread sesuai dengan argument name. Hal ini dapat menyebabkan SecurityException.
public final int getPriority() Mengembalikan nilai prioritas yang telah diberikan kepada thread tersebut.
public final boolean isAlive() Menunjukkan bahwa thread tersebut sedang berjalan atau tidak.
public final void join([long millis, [int nanos]]) Sebuah overloading method. Sebuah thread yang sedang berjalan, harus menunggu sampai thread tersebut selesai (jika tidak ada parameter-parameter spesifik), atau sampai waktu yang telah ditentukan habis.
public static void sleep(long millis) Menunda thread dalam jangka waktu milis. Hal ini dapat menyebabkan InterruptedException.
public void run() Eksekusi thread dimulai dari method ini.
public void start() Menyebabkan eksekusi dari thread berlangsung dengan cara memanggil method run.


contoh:

import javax.swing.*;
import java.awt.*;
class CountDownGUI extends JFrame {
JLabel label;
CountDownGUI(String title) {
super(title);
label = new JLabel("Start count!");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().add(new Panel(), BorderLayout.WEST);
getContentPane().add(label);
setSize(300,300);
setVisible(true);
}
void startCount() {
try {
for (int i = 10; i > 0; i--) {
Thread.sleep(1000);
label.setText(i + "");
}
Thread.sleep(1000);
label.setText("Count down complete.");
Thread.sleep(1000);
} catch (InterruptedException ie) {
}
label.setText(Thread.currentThread().toString());
}
public static void main(String args[]) {
CountDownGUI cdg = new CountDownGUI("Count down GUI");
cdg.startCount();
}
}

Tidak ada komentar:

Posting Komentar