• Filter Post by Date

    October 2010
    S M T W T F S
    « Sep   Dec »
     12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31  
  • Perhatian!

    1. Klik judul post untuk masuk ke link download atau untuk membaca secara lengkap post tersebut.
    2. Klik gambar untuk memperbesar gambar tersebut.

  • Quotes of the Week

    Selidikilah aku, ya Allah, dan kenallah hatiku, ujilah aku dan kenallah pikiran-pikiranku; lihatlah, apakah jalanku serong, dan tuntunlah aku di jalan yang kekal!
  • Site View

zion.freetzi.com

Jangan seorangpun menganggap engkau rendah karena engkau muda. Jadilah teladan bagi orang-orang percaya, dalam perkataanmu, dalam tingkah lakumu, dalam kasihmu, dalam kesetiaanmu dan dalam kesucianmu.

Tugas Praktikum Sistem Operasi II

Source Code “Producer-Consumer Problem” di bawah ini menggunakan 1 buffer item sebagai tempat penyimpanan item-nya. Ubahlah source code tersebut menjadi menggunakan 3 buffer. Sebagai tambahan, Producer & Consumer masing-masing memproduksi dan mengkonsumsi item sebanyak 5 kali. Agar hasilnya lebih bagus, sebaiknya jumlah memproduksi dan mengkonsumsinya diubah menjadi sebanyak 30 kali.

NB: [Lagi] Kepada peserta praktikum yang sudah mengerti diharapkan dapat mengajari teman-temannya yang belum mengerti.

Factory.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/**
 * @(#)Factory.java
 *
 *
 * @author 
 * @version 1.00 2010/7/14
 */
 
public class Factory
{
	private String item;
 
	public Factory()
	{
	}
 
	public synchronized void insertItem(String newItem)
	{
		while(item!=null)
		{
			System.out.print("P >>> Item masih ada. ");
			System.out.println("Producer menunggu.");
 
			try
			{
				/*
				Method wait harus berada dalam blok try catch
				dimana exception yang ditangkap
				adalah InterruptedException
				*/
				wait(); //Berhenti apabila item masih berisi
			}
			catch(InterruptedException ie)
			{
			}
 
			System.out.print("P >>> Item telah kosong. ");
			System.out.println("Producer dapat memasukkan item!");
		}
 
		System.out.println("P >>> Insert : "+newItem);
		this.item = newItem;
		notify();
	}
 
	public synchronized void consumeItem()
	{
		while(item==null)
		{
			System.out.print("C >>> Item masih kosong. ");
			System.out.println("Consumer menunggu.");
 
			try
			{
				/*
				Method wait harus berada dalam blok try catch
				dimana exception yang ditangkap
				adalah InterruptedException
				*/
				wait(); //Berhenti apabila item kosong
			}
			catch(InterruptedException ie)
			{
			}
 
			System.out.print("C >>> Item sudah ada.");
			System.out.println("Consumer dapat mengambil item!");
		}
 
		System.out.println("C >>> Consume: "+item);
		String theItem = item;
 
		item = null;
		notify();
	}
}

Producer.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
 * @(#)Producer.java
 *
 *
 * @author 
 * @version 1.00 2010/7/14
 */
 
public class Producer extends Thread
{
	private Factory factory;
 
	public Producer(Factory factory)
	{
		this.factory = factory;
	}
 
	public void run()
	{
		for(int i=1; i<=5; i++)
		{
			factory.insertItem("Product "+i);
			delay((int)(Math.random()*100));
		}
	}
 
	public void delay(int millis)
	{
		try
		{
			Thread.sleep(millis);
		}
		catch(InterruptedException ie)
		{
		}
	}
}

Consumer.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/**
 * @(#)Consumer.java
 *
 *
 * @author 
 * @version 1.00 2010/7/14
 */
 
 
public class Consumer extends Thread
{
	private Factory factory;
 
	public Consumer(Factory factory)
	{
		this.factory = factory;
	}
 
	public void run()
	{
		for(int i=0; i<5; i++)
		{
			factory.consumeItem();
			delay((int)(Math.random()*100));
		}
	}
 
	public void delay(int millis)
	{
		try
		{
			Thread.sleep(millis);
		}
		catch(InterruptedException ie)
		{
		}
	}
}

MiniFactorySimulation.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
 * @(#)MiniFactorySimulation.java
 *
 *
 * @author 
 * @version 1.00 2010/7/14
 */
 
 
public class MiniFactorySimulation
{
	public static void main (String[] args)
	{
		/*Kita membuat satu objek dari class Factory.*/
		Factory factory = new Factory();
 
		/*
		Objek factory yang kita ciptakan diatas
		kita share ke objek producer & consumer
		yang akan kita buat di bawah ini.
		Ingat, objek factory yang ada
		di objek producer & consumer adalah sama.
		*/
 
		Producer producer = new Producer(factory);
		Consumer consumer = new Consumer(factory);
 
		producer.start();
		consumer.start();
	}
}
Categories: Praktikum Sistem Operasi
Free Web Hosting