Lab Activity Modul2-Collection & Thread
Lab Activity Modul2-Collection & Thread
Tujuan
Setelah mempelajari modul ini peserta diharapkan dapat: Memahami tentang interface Collection pada Java Mengerti tentang pembuatan Vector, ArrayList dan LinkedList. Membuat dan mengelola Thread Memahami proses sinkronisasi data Menggunakan method Wait dan Notify
2. Latar Belakang
Didalam pembuatan game java sering kali kita mendefinisikan banyak object seperti gambar, dan grafik geometri yang begitu banyak, untuk itu dibutuhkan suatu manajemen yang menangani hal tersebut atau lebih tepatnya sebuah object untuk menangani objectobject dari gambar atau grafik yang dibuat. Java telah menyediakan sebuah container atau collection yang digunakan untuk menangani hal tersebut. Selain itu, seiring dengan banyaknya object gambar atau grafik geometri yang dibuat maka proses yang dibutuhkan juga memakan waktu yang cukup lama dimana dalam java penggambaran object itu dilakukan 1000 kali per detik yang sangat memberatkan kinerja dari procesor, oleh sebab itu kita membutuhkan thread untuk menangani hal terebut agar komputer kita berjalan dengan normal sesuai dengan keinginan.
3. Percobaan
Percobaan 1: Membuat Class PercobaanVektor
import java.awt.Graphics; import java.util.Vector; import javax.swing.JFrame;
public class PercobaanVektor extends JFrame{ public static void main(String args[]){ new PercobaanVektor(); } Vector vk; PercobaanVektor(){ vk = new Vector (); vk.add("test Vektor"); vk.addElement("Coba Add Lagi"); this.setDefaultCloseOperation(this.EXIT_ON_CLOSE); this.setSize(500, 500); this.setVisible(true); setTitle("Test Vector"); } public void paint(Graphics g.drawString("Jumlah 10, 50); g.drawString("Elemen g.drawString("Elemen g.drawString("Elemen g.drawString("Elemen g.drawString("Method vk.clear(); g.drawString("Method } } g){ Elemen Vektor : "+String.valueOf(vk.size()), Vektor Ke-0 : "+vk.elementAt(0), 10, 100); Vektor Ke-1 : "+vk.elementAt(1), 10, 150); Pertama : "+vk.firstElement(), 10, 200); Terakhir : "+vk.lastElement(), 10, 250); isEmpty : "+vk.isEmpty(), 10, 300); isEmpty : "+vk.isEmpty(), 10, 350);
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE); this.setSize(500, 500); this.setVisible(true); setTitle("Test ArrayList"); } public void paint(Graphics g){ g.drawString("Banyaknya Elemen di ArrayList adalah : "+String.valueOf(al.size()), 10, 50); g.drawString("Isinya Adalah Sebagai berikut : ", 10, 100); g.drawString("Elemen Ke-0 : "+(String) al.get(0), 10, 150); g.drawString("Elemen Ke-1 : "+String.valueOf( al.get(1)), 10, 200); al.remove(0); // menghapus elemen ke-0 al.add(1, "Tets"); g.drawString("Banyaknya Elemen di ArrayList Setelah di Hapus adalah : "+String.valueOf(al.size()), 10, 250); g.drawString("Elemen Ke-1 : "+String.valueOf( al.get(1)), 10, 300); al.clear(); // menghapus semua elemen g.drawString("Method isEmpty() : "+String.valueOf( al.isEmpty()), 10, 350); } }
} public void run() { int i=0; while(i<50){ try{ Thread.sleep(40); }catch(Exception e){} /* synchronized(messageList){ for(int j=0;j<messageList.size();j++) System.out.println(messageList.get(j)); } */ for(int j=0;j<messageList.size();j++) System.out.println(messageList.get(j)); i++; } } } public static void main(String arg[]){ new TestSynchronizedThread(); } }
Thread th= new Thread(this); public ThreadA(){ th.start(); } public void run() { int i=0; while(i<100){ try{ Thread.sleep(1000); }catch(Exception e){} setMessage("Hi"+i); i++; } } } class ThreadB implements Runnable{ Thread th= new Thread(this); public ThreadB(){ th.start(); } public void run() { int i=0; while(true){ waitForMessage(); System.out.println(msg); i++; } }
} public synchronized void setMessage(String message) { msg=message; System.out.println("set message : "+msg); notify(); } public synchronized void waitForMessage() { try { wait(); } catch (InterruptedException ex) {
Percobaan 2
Percobaan 3