Rangkuman Materi PmBo kelas Xll RPL Bab 1 Dasar-Dasar Thread
A. Thread dalam Java
T hread merupakan potongan program dengan ukuran T kecil (lightweight process) dalam suatu proses yang dapat dijadwalkan oleh sistem operasi. Setiap program Java memiliki setidaknya satu thread, yang dikenal sebagai main thread, yang dibuat oleh Java Virtual Machine (JVM) ketika main method pertama kali dipanggil .
Dengan menggunakan thread, Anda dapat mengeksekusi proses dalam sebuah program tertentu secara paralel. Eksekusi dilakukan dengan membagi proses atau operasi tertentu ke dalam beberapa thread. Sistem operasi akan mendeteksi thread-thread tersebut dan membagi waktu pemrosesan untuk masing-masing thread. Oleh karena itu, dengan menggunakan thread, Anda dapat menghemat waktu yang diperlukan untuk melakukan pemrosesan program.
1. Thread Life Cycle
Dalam mempelajari thread, perlu dipahami adanya berbagai tahapan siklus hidup thread seperti ditunjukkan pada diagram berikut.
new() New start() Runnable run() Running Dead Program berakhir Waiting wait() Gambar 1.1 Diagram thread life cycle.
Pada diagram thread life cycle, terdapat lima tahapan atau state, yaitu sebagai berikut.
a. New
Pada tahap ini, terjadi pembentukan thread menggunakan statement new. Selanjutnya, thread akan berada pada new state. Pada saat tersebut, thread belum aktif sehingga belum dapat menjalankan perintah apa pun.
b. Runnable
Pada tahap ini, instance threads siap dipanggil menggunakan method start(). Ketika method start() dipanggil, status akan berubah menjadi Runnable. Pada saat tersebut, thread sudah dapat berjalan, tetapi belum dilakukan karena thread scheduler belum dijalankan. Thread scheduler berfungsi sebagai pengontrol yang menentukan thread yang akan berjalan ke tahap berikutnya. Ketika suatu thread telah berpindah dari Runnable state, thread tersebut dapat kembali lagi pada tahap ini.
c. Running
Ketika thread scheduler telah menentukan suatu thread untuk berjalan, thread tersebut akan masuk ke running state. Pada tahap ini, method run() akan dieksekusi dan aktif. Setelah memasuki running state, thread akan masuk ke tahap berikutnya. Thread dapat kembali ke Runnable state, masuk ke Waiting state, atau berhenti dan berakhir pada Dead state.
d. Waiting
Suatu thread dapat masuk ke Waiting state karena beberapa alasan, misalnya pemanggilan method wait(). Pemanggilan ini dapat disebabkan thread tersebut menunggu selesainya thread lain sebelum thread tersebut dapat dijalankan atau tersedianya sumber daya (resource) yang cukup untuk thread tersebut. Setelah Walting state berakhir, thread akan kembali ke Runnable state.
e .Dead
Suatu thread akan memasuki Dead state setelah selesai menjalankan method run(). Thread tersebut akan berhenti dan dinyatakan mati (terhenti). Jika Anda mencoba memanggil method start() pada state ini, Anda akan mendapatkan pesan Illegal ThreadStateException, yang disebabkan pemanggilan method dilakukan tidak pada state yang seharusnya
2. Prioritas Thread
Dalam melakukan pembagian waktu pemrosesan thread (scheduling), Java memiliki priority atau prioritas yang menentukan proses yang akan dijalankan terlebih dahulu. Prioritas thread dalam Java memiliki pembagian nilai prioritas sebagai berikut.
a. MIN PRIORITY: thread dengan nilai prioritas 1 (rendah).
b. NORM PRIORITY: thread dengan nilai prioritas 5 (normal), nilai prioritas ini adalah nilai default yang diberikan pada setiap thread di Java.
C. MAX PRIORITY: thread dengan nilai prioritas 10 (tinggi).
Thread dengan nilai prioritas tinggi berarti thread tersebut sangat penting bagi program. Oleh karena itu, waktu pemrosesan (processor time) untuk thread tersebut, diatur lebih dahulu daripada thread dengan nilai prioritas yang lebih rendah. Akan tetapi, hal ini tidak akan memengaruhi urutan eksekusi thread tersebut dan sangat ditentukan oleh platform yang digunakan.
3. Jenis-jenis Thread
Berdasarkan pembuatnya, thread dalam Java terbagi atas dua jenis, yaitu sebagai berikut.
a. User thread
User thread adalah thread yang dibuat oleh aplikasi atau user dan memiliki nilai prioritas tinggi. Thread ini adalah thread utama yang dijalankan. JVM baru akan dijalankan setelah prosesor selesai mengeksekusi semua user thread.
b. Daemon thread
Daemon thread adalah thread yang sebagian besar dibuat oleh JVM dan memiliki nilai prioritas rendah. Thread ini biasa digunakan untuk melakukan proses background, seperti garbage collection dan house-keeping. Berbeda dengan user thread, JVM tidak menunggu thread ini selesai melakukan eksekusi. Setelah semua user thread selesai diekseskusi, JVM akan langsung menutup tanpa menunggu semua daemon thread selesai terlebih dahulu.
B) Pembuatan Thread dalam Java pembuatan thread dalam Java dapat dilakukan menggunakan Pemb dua macam cara, yaitu menggunakan interface Runnable dan membuat turunan dari thread. Berikut adalah penjelasan mengenai dua cara pembuatan single thread tersebut.
1. Menggunakan interface Runnable
Untuk menggunakan teknik ini, selain mengimplementasi interface Runnable, juga perlu dibuat sebuah method run().
class Multiz extends Thread {
public void run () {
System.out.println ("thread extends is running...");
}
public static void main (String args [] ) {
Multiz t1 = new Multiz();
t1.start();
}
}
2. Menggunakan turunan class Thread
Cara lain yang dapat dilakukan untuk mengimplementasi thread dalam Java adalah dengan menurunkan (extend) class Thread.
3. Perbedaan Penggunaan Interface Runnable dan Turunan Class Thread
Berikut adalah perbedaan pembuatan thread menggunakan interface Runnable dan turunan class Thread .
Interface Runnable
1.Tidak memiliki overhead method tambahan
2 Dapat meng-extend class lain
Turunan class thread
1.Memiliki overhead method tambahan dari class Thread
2.Tidak dapat meng-extend tlaus lain
Interface Runnable
3 Merupakan praktik pemrograman berorientasi objek terbaik
4 Hubungan renggang (loosely coupled)
5 Meningkatkan penggunaan kembali kode yang ada (code reusability)
6 Untuk tugas dari thread yang lebih umum 7 Pemeliharaan kode lebih mudah
8 Memisahkan task yang sebenarnya dari eksekutor
Turunan Class Thread
3.Bukan merupakan praktik pemrograman berorientasi objek terbaik
4.Hubungan rapat (tightly coupled)
5.Tidak meningkatkan penggunaan kembali kode yang ada (code reusability)
6.Untuk tugas dari thread tertentu
7.Pemeliharaan kode memakan waktu
8.Task tidak terpisah dari eksekutor
Setelah melihat data perbandingan tersebut, diharapkan Anda dapat menentukan metode untuk membuat thread sesuai dengan kebutuhan program yang dibangun. Secara umum, dapat dikatakan penggunaan interface Runnable merupakan metode yang lebih baik untuk membuat thread di Java karena beberapa keunggulan, seperti dalam hal code reusability dan dapat meng-extend class lain. Namun, pilihan tersebut disesuaikan kembali dengan program atau thread yang akan Anda kembangkan.
C. Multithreading
Multithreading pada Java adalah proses mengeksekusi dua M atau lebih thread secara bersamaan untuk pemanfaatan CPU secara maksimal. Dengan menerapkan multithreading, beberapa thread dapat berjalan secara bersamaan tanpa harus mengalokasikan tambahan memori. Dengan demikian, alokasi memori menjadi lebih hemat dan waktu yang dibutuhkan untuk context switching juga lebih singkat. Perhatikan kode program berikut.
D. Implementasi Multithreading dengan Java Swing
Sebagai bagian dan teknik pemrograman Java, multithreading S dapat diimplementasikan dengan menggunakan Swing. Fungsi thread atau moltithread dalam Swing adalah sebagai jalinan penunda atau pengalih eksekusi dalam Java. Untuk mengoperasikan thread dengan Swing, diperlukan sebuah form dan tombol yang akan memanggil ActionListener dari thread atau multithread tersebut. Perhatikan kode program berikut.Penjelasan kode program tersebut adalah sebagai berikut.
1. Pada STEP 1, dilakukan import library Java yang akan digunakan untuk membentuk frame dan tombol.
2. Pada STEP 2, dilakukan proses pembentukan frame dan button
3. Pada STEP 3, dilakukan layout frame, tombol, serta ActionListener pada setiap tombol. Pada bagian inilah, inti operasi thread dibentuk dan ActionListener akan dipanggil melalui objek tombol.
4. Pada STEP 4 dan STEP 5, dilakukan pemanggilan method ActionListener. Hasil kompilasi kode program tersebut adalah sebagai berikut.


Komentar
Posting Komentar