Langsung ke konten utama

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.

Perhatikan kode program berikut.
1   public class MultiThread implements               runnable {
2   public static void main (String[] args) {
3   Thread MThread1 = new                                     Thread("Percobaan 1");
4   Thread MThread2 = new                                     Thread("Percobaan 2");
5   Thread MThread3 = new                                     Thread("Percobaan 3");
6   MThread1.start();
7   MThread2.start();
8   MThread3.start();
9   System.out.println("MULTITHREAD                 SEDANG JALAN NIH:");        10System.out.println(MThread1.getName());  11System.out.println(MThread2.getName());
12System.out.println(MThread3.getName()); 13 }
14  
15 public void run() {}
16 }

Penjelasan kode program tersebut adalah sebagai berikut.
1. Class menggunakan thread dengan meng-implement pada interface Runnable.

public class MultiThread implements Runnable 

2. Pembuatan objek baru dengan thread.

Thread MThread1 = new Thread("Percobaan 1");
Thread MThread2 = new Thread("Percobaan 2");
Thread MThread3 = new Thread("Percobaan 3");

3. Perintah untuk menghidupkan thread.

MThread1.start();
MThread2.start();
MThread3.start();

4. Pemanggilan thread. 

System.out.println(MThread1.getName()); System.out.println(MThread2.getName());
System.out.println(MThread3.getName());

5. Pemicu thread.

public void run () {
}

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

Postingan populer dari blog ini

Membuat jam digital dengan arduino R3

Manajemen dan pengembangan usaha

Bab 3 pelajaran Pemrograman Berorientasi Objek Kls XII RPL