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.
State dari Thread
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.
Sebuah contoh thread "CountDown GUI"
Kode program :
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();
}
}
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();
}
}
Screenshot :
Output :
1) memulai perhitungan dari 10 sampai 0
3) Thread terdeteksi
Sumber : JENI (Java Education Network Indonesia)
Tidak ada komentar:
Posting Komentar