0% menganggap dokumen ini bermanfaat (0 suara)
109 tayangan

Laporan Praktikum Distributed System (Multithread Programming)

Laporan pratikum ini membahas tentang multithread programming dengan 3 kalimat utama. Pertama, memperkenalkan latar belakang pratikum dan tujuannya untuk mempelajari pengertian multithread dan proses thread. Kedua, menjelaskan langkah-langkah praktikum mulai dari persiapan perangkat lunak sampai penulisan kode program. Ketiga, menganalisis kode program yang ditulis dan menjelaskan fungsi-fungsi yang digunakan dalam pemrograman mult

Diunggah oleh

Kamalia Putry
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
109 tayangan

Laporan Praktikum Distributed System (Multithread Programming)

Laporan pratikum ini membahas tentang multithread programming dengan 3 kalimat utama. Pertama, memperkenalkan latar belakang pratikum dan tujuannya untuk mempelajari pengertian multithread dan proses thread. Kedua, menjelaskan langkah-langkah praktikum mulai dari persiapan perangkat lunak sampai penulisan kode program. Ketiga, menganalisis kode program yang ditulis dan menjelaskan fungsi-fungsi yang digunakan dalam pemrograman mult

Diunggah oleh

Kamalia Putry
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 14

DISTRIBUTED SYSTEM

MULTITHREAD PROGRAMMING

LAPORAN PRATIKUM

Nama : Kamalia Putri

Nim : 1890343020

Kelas : 2.B

Dosen Pembimbing : Safriadi, ST, M.Kom

PRODI TEKNOLOGI REKAYASA KOMPUTER JARINGAN

JURUSAN TEKNOLOGI INFORMASI DAN KOMPUTER

POLITEKNIK NEGERI LHOKSEUMAWE

TAHUN PELAJARAN 2020


LEMBAR PENGESAHAN

DISTRIBUTED SYSTEM

Nomor : 05/2B/Semester 4/TRKJ/2020

Judul Pratikum : Multithread Programming

Tanggal Pratikum : 20 Maret 2020

Tanggal Selesai : 26 Maret 2020

Tabel Penilaian :

Lhokseumawe, 26 Maret 2020

Nama Peserta Pembimbing,

Kamalia Putri Safriadi, ST, M.Kom


MULTITHREAD PROGRAMMING

A. Tujuan

1. Mengetahui pengertian dari multithread

2. Dapat memahami proses thread berjalan dalam suatu program

B. Alat dan Bahan

 Laptop

 Aplikasi NeatBeans IDE

C. Dasar Teori

Proses thread yaitu sebuah intruksi atau alur dalam setiap urutan kerja yang

sesuai dengan proses yang telah ditentukan. Dalam pemrosesan terbagi menjadi 3

jenis yaitu pemrograman singlethread, pemrograman multiprocess, dan

pemrograman multithread. Singlethread adalah sebuah proses yang dilakukan

pada masing-masing statement dengan cara dieksekusi secara berurutan atau

satu-persatu. Multiprocess adalah pemrosesan yang dilakukan secara tidak

berurutan atau setiap program akan memproses programnya masing-masing

secara bersamaan dan memori yang digunakan oleh setiap statement ketika

eksekusi berbeda-beda. Dalam proses multithread jalan kerja pemogramannya

sama seperti pada multiprocess yang membedakan hanya dalam memori yang

digunakan oleh setiap statement ketika eksekusi sama semua.

 Multithread pada Java

Di dalam pengeksekusian multithread dalam java dapat dilakukan

implementasi dengan java.lang.Thread . Untuk menggunakan kelas Thread dapat

dilakukan dengan perintah extend dan melakukan override method run(). Untuk

kelas java.lang.Thread terdapat beberapa method, yaitu sebagai berikut :


 Mengontrol Thread

Dalam pengontrolan thread terdapat method interrupt, stop, suspend, resume,

join. Interrupt yang digunakan untuk membangunkan thread yang sedang

tertidur atau dalam posisi idle. Stop digunakan untuk memerintahkan berhenti

kepada thread yang lain. Suspend yang digunakan untuk memberhentikan kerja

thread pada program untuk sementara dan resume yang berfungsi untuk

mengaktifkan kembali thread yang telah dihentikan sementara sebelumnya. Join

dapat digunakan untuk pengecekan atau pemantauan aktif dan tidak aktifnya

thread.

Referensi : http://informatika.uin-malang.ac.id/wp-content/uploads/2019/09/Distributed-

System-and-Security-practicum-2017-2018.pdf

D. Langkah Kerja
Langkah awal yang dilakukan yaitu menyediakan laptop dan install aplikasi

NetBeans IDE.
Selanjutnya buka buka applikasi tersebut dan akan keluar penampilan awal

seperti gambar dibawah ini.

Selanjutnya Klik pada bagian file dan pilih new project atau bisa klik Ctrl +

Shift + N

Dan pada bagian selanjutnya akan keluar tampilan seperi berikut untuk

kejelasannya perhatikan gambar berikut.

2
Jadi, pada gambar diatas menjelaskan urutan yang harus kita klik terlebih

dahulu.

Setelah itu, akan keluar tampilan seperti gambar dibawah ini.

Pada bagian Project Name dapat kita isi nama project yang akan kita buat dan

setalah bagian tersebut diisi lanjut klik bada bagian Finish.

Dan berikutnya akan ada tampilan seperti berikut.

Setelah itu, langsung ketikkan program yang pertama yaitu program untuk

counter thread. Ketikkan program seperti pada gambar dibawah ini.


Hasil untuk program tersebut :

Apabila program pertama telah selesai, selanjutnya ketikkan source code

untuk program yang kedua. Berikut programnya :


Langkah terakhir yaitu klik tombol run, maka akan tampil output seperti

berikut.

E. Analisa
Pada program pertama hal-hal yang dapat dianalisa sebagai berikut ini :
Dalam java netbeans terdapat 3 unsur utama yaitu package,class, dan method
utama yaitu main() dimana main() berfungsi untuk menjalankan semua fungsi
atau program yang di inputkan, nama package, clas,dan method pada program ini
adalah:
 package counter;

merupakan package dari program tersebut

 public class Counter

merupakan class utama dalam program kali ini, dan pada program pertama

terdapat dua class. Class yang kedua yaitu class CountingThread

implements Runnable

 class CountingThread implements Runnable

adalah sebuah kelas yang mengimplementasikan fungsi run() dalam program

tersebut

 private int countValue;

adalah sebuah kode akses yang bertipe data integer yang terdapat dalam

class pertama, yang berarti sebuah akses beserta method didalamnya hanya

dapat dilakukan oleh class pertama. Dan countValue yang digunakan untuk

menghitung data
 public Counter(){ dan countValue = 0;

Yaitu pendeklarasian pada class yang pertama public counter yang berarti

dapat diakses oleh kedua class dan counter adalah sebuah method yang dapat

dijalankan secara otomatis pada pembuatan sebuah objek yang kemudian

dilanjutkan dengan pendeklarasian nilai dalam countValue

 countValue = start;

Variabel countValue akan menampung nilai yang dimiliki oleh variable start

 public Counter(int start){

Yaitu membuat sebuah parameter start yang bertipe data integer

 public synchronized void increaseCount(){

Merupakan sintaks untuk sinkronis method. Sinkonis yang berarti sebuah

blok yang apabila dijalankan maka hanya ada satu thread dalam satu waktu

yang dijalannkan.

 int count = countValue;

Yaitu sebuah variabel count yang bertipe data integer yang dideklasi dan

menampung nilai dari countValue

 try{}catch{}

Syntax ini digunakan meminimalisir kesalahan pada program. Atau untuk

mencari code apakah ada kondisi code yang error.

 Thread.sleep(5);

Syntax tersebut berfungsi untuk memerintahkan program tidur tetapi program

yang dijalankan masih tetap berjalan dapat dikatakan syntax tersebut


digunakan untuk memberi jeda antar program thread dengan waktu 5

milidetik.

 count = count +1; dan countValue = count;

Adalah proses pendeklarasian variabel count yang setiap pemanggilan

variable count ditambah dengan 1 dan countValue menampung nilai count

tersebut

 public synchronized int getCount() dan return countValue;

Yaitu pendeklarasian method sinkronis yang kemudian dilakukan

pengembalian nilai dari countValuue

 Counter myCounter; dan int countAmount;

Merupakan pendeklarasian variabel myCounter dari class yang pertama tadi

yaitu class Counter dan variabel countAmount yang bertipe data integer

 public CountingThread(Counter counter, int amount)

Yaitu sintaks dengan kode akse akses public yang memiliki parameter nilai

counter dan amount.

 myCounter = counter; dan countAmount = amount;

Yaitu pendeklarasian variabel myCounter yang menampung nilai dari counter

dan variabel countAmount yang menampung nilai dari amount

 public void run() {

Sebuah function untuk menjalankan program yaitu apabila method run

dipanggil maka status thread akan berubah menjadi runnable yang berarti

thread telah siap untuk dijalankan

 for(int i=1; i<= countAmount; i++){

Adalah sebuah sintaks untuk melakukan perulangan


 myCounter.increaseCount();

System.out.println(""+myCounter.getCount());

Sintaks diatas merupakan variabel yang terdapat dalam perulangan, yaitu

variabel myCounter memanggil method increaseCount yang terdapat pada

class pertama tadi. Yang kemudian akan menampilkan output dari nilai count

dan hasil perulangan dengan variabel count melakukan pemanggilan method

getCount

 Counter c = new Counter();

Yaitu membuat objek baru c yang menampung nilai dari method Counter

 Runnable runner = new CountingThread(c, 10);

Sintaks tersebut yaitu pembuatan object baru runner yang menampung nilai

dari CountingThread dan memiliki parameter c dan 10. 10 tersebut dimaksud

yaitu jumlah perhitungan yang akan dilakukan adalah 10 kali.

 Thread t1 = new Thread(runner);

Thread t2 = new Thread(runner);

Thread t3 = new Thread(runner);

Sintaks diatas merupakan pembuatan objek baru yaitu t1,t2,t3 yang

menampung nilai dari thread dengan parameter runner didalamnya

 t1.start();t2.start();t3.start();

t1.join();t2.join();t3.join();

Yaitu variabel t1,t2 dan t3 memanggil fungsi start yang digunakan untuk

menjalankan tugas dari thread , dan fungsi join yang digunakan untuk

mengawasi kapan program thread akan mati, dan ketika program telah mati
maka akan tampil tulisan pemberitahuan bahwa program telah mati atau

selesai.

Berikutnya dilanjutkan dengan analisa pada program kedua, dimana ada

beberapa fungsi atau sintaks yang sama dengan program pertama, berikut ini

analisis untuk source code yang memiliki fungsi yang berbeda pada program

kedua. Berikut analisanya:

 public class Waitnotify extends Thread{

Merupakan sebuah public class waitnotify dengan turunannya yaitu thread

 Thread notificationThread = new Waitnotify();

Merupakan pendeklarasian objek baru dengan menampung nilai dari

waitnotify

 notificationThread.start();

Adalah objek notificationThread memanggil fungsi start untuk mulai

menjalankan program

 synchronized (notificationThread){

Adalah sebuah method synchronized yang menampung nilai dari

notificationThread

 notificationThread.wait();

Yaitu variabel notificationThread menggil fungsi wait. Ketika fungsi wait

dijalankan maka kunci pada block synchronized akan dilepaskan dan

menunggu sampai muncul notifikasi

 System.in.read();

Yaitu untuk menulis dan membaca argument pada output yang dihasilkan
 synchronized (this)

Yaitu variabel synchronized yang menampung kata kunci this yang

digunakan untuk menyatakan objek sekarang

 this.notifyAll();

Kemudian kata kunci this memanggil fungsi notifyAll. notifyAll akan

memberitahu kepada semua thread yang sedang menunggu kunci pada objek

sekarang atau dapat disebut notifyAll merupakan notifikasi yang ditunggu

setelah fungsi wait dijalankan.

F. Kesimpulan

Beberapa kesimpulan yang dapat diambil setelah melakukan praktikum kali

ini adalah sebagai berikut :

 Synchronized adalah sebuah blok yang apabila dijalankan maka hanya ada

satu thread dalam satu waktu yang dijalankan.

 Counter adalah sebuah method yang dapat dijalankan secara otomatis pada
pembuatan sebuah objek

 Wait merupakan sebuah fungsi yang apabila dijalankan maka kunci pada

block synchronized akan dilepaskan dan menunggu sampai muncul notifikasi

 NotifyAll adalah sebuah notifikasi yang akan akan memberitahukan kepada

semua thread yang sedang menunggu kunci pada objek sekarang atau dapat

disebut notifyAll merupakan notifikasi yang ditunggu setelah fungsi wait

dijalankan.

Anda mungkin juga menyukai