Anda di halaman 1dari 12

1.

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.

Distributed by Meruvian Education

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);

Distributed by Meruvian Education

Percobaan 2: Membuat Class ArrayListCoba


import java.awt.Graphics; import java.util.ArrayList; import javax.swing.JFrame; public class ArrayListCoba extends JFrame{ public static void main(String args[]){ new ArrayListCoba(); } //membuat object arraylist ArrayList al=new ArrayList(); ArrayListCoba(){ al.add("Test Array List"); al.add(1);

// Object String // Object Integer

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); } }

Distributed by Meruvian Education

Percobaan 3: Pembuatan class PercobaanLinkedList


import java.awt.Graphics; import java.util.LinkedList; import javax.swing.JFrame; public class PercobaanLinkedList extends JFrame { public static void main(String args[]){ new PercobaanLinkedList(); } LinkedList ll=new LinkedList(); PercobaanLinkedList(){ ll.add("Test LinkedList"); ll.add("Coba Lagi"); ll.add(10243); this.setDefaultCloseOperation(this.EXIT_ON_CLOSE); this.setSize(500, 500); this.setVisible(true); setTitle("Test LinkedList"); } public void paint(Graphics g){ g.drawString("Jumlah Elemen : "+String.valueOf(ll.size()), 10, 50); g.drawString("Elemen Ke-1 : "+ll.get(0), 10, 100); g.drawString("Elemen Ke-2 : "+ll.get(1), 10, 150); g.drawString("Elemen Ke-3 : "+ll.get(2), 10, 200); g.drawString("Method getFirst() : "+ll.getFirst(), 10, 250); g.drawString("Method getLast() : "+ll.getLast(), 10, 300); ll.addLast("Terakhir"); g.drawString("Method getLast() : "+ll.getLast(), 10, 350); ll.remove(); g.drawString("Jumlah Elemen Sekarang : "+String.valueOf(ll.size()), 10, 400); } }

Distributed by Meruvian Education

Percobaan 4: Pembuatan class TestThread


public class TestThread implements Runnable { private Thread th; private boolean running; private long endTime; public TestThread(){ running=true; th = new Thread(this); endTime= System.currentTimeMillis()+10000; } public void run() { int i=0; while(running){ try{ Thread.sleep(1000); }catch(Exception e){} System.out.println("Run "+i); if(System.currentTimeMillis()>endTime) running=false; i++; } } public void start(){ th.start(); } public static void main(String [] agr){ new TestThread().start(); } }

Distributed by Meruvian Education

Percobaan 5: Pembuatan class TestSynchronizedThread


import java.util.*; public class TestSynchronizedThread { private ArrayList<String> messageList; private ThreadA ta; private ThreadB tb; public TestSynchronizedThread(){ messageList = new ArrayList<String>(); ta = new ThreadA(); tb = new ThreadB(); } class ThreadA implements Runnable{ Thread th= new Thread(this); public ThreadA(){ th.start(); } public void run() { int i=0; while(i<100){ try{ Thread.sleep(20); }catch(Exception e){} /* synchronized(messageList){ messageList.add("Hi "+i); } */ messageList.add("Hi "+i); System.out.println("adding message : Hi"+i); i++; } } } class ThreadB implements Runnable{ Thread th= new Thread(this); public ThreadB(){ th.start();

Distributed by Meruvian Education

} 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(); } }

Percobaan 6: Pembuatan class TestSynchronizedThread


import java.util.*; public class TestWaitnNotifyThread { private ThreadA ta; private ThreadB tb; private String msg; public TestWaitnNotifyThread(){ ta = new ThreadA(); tb = new ThreadB(); } class ThreadA implements Runnable{

Distributed by Meruvian Education

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) {

Distributed by Meruvian Education

} } public static void main(String arg[]){ new TestWaitnNotifyThread(); } }

Distributed by Meruvian Education

Kunci Jawaban : Percobaan 1

Distributed by Meruvian Education

Percobaan 2

Distributed by Meruvian Education

Percobaan 3

Distributed by Meruvian Education

Anda mungkin juga menyukai