Minggu, 04 Agustus 2024

Materi Pembelajaran PMBO Kls XII RPL Bab 1


 Dasar-Dasar Thread

A.Thread dalam Java

 Thread 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----->Wait ()---->Waiting---->Dead.

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 Waiting 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).

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 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 ().

Perhatikan kode program berikut:


Hasil kompilasi kode program tersebut adalah:


2. Menggunakan turunan class Thread
 
Cara lain yang dapat dilakukan untuk mengimplementasi thread dalam Java adalah dengan menurunkan (extend) class Thread.
Perhatikan kode pemrograman berikut:


Hasil kompilasi kode program tersebut adalah:


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.
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
1.Memiliki overhead method tambahan dari class Thread.
2.Tidak dapat meng-extend class lain.
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.

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.


Hasil kompilasi kode program tersebut adalah:



D. Implementasi Multithreading dengan Java Swing 

  Sebagai bagian dari teknik pemrograman Java, multithreading dapat diimplementasikan dengan menggunakan Swing. Fungsi thread atau multithread 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:


Hasil kode pemrograman tersebut adalah:


Tidak ada komentar:

Posting Komentar

Ulangan Akhir Bab 5

 A. Pilihlah salah satu jawaban yang tepat.  1. Jenis usaha yang memiliki uang kas sebagai modal dan biaya produksi dengan besaran tidak leb...