J. E. N. I.
Get 49 Generate 35 Get 35 Generate 39 Get 39 Generate 85 Get 85 Get 85 Get 85 Generate 35 Get 35 Get 35
Hasil tersebut bukanlah hasil yang kita harapkan. Kita berharap bahwa setiap nilai yang diproduksi oleh produser dan juga kita akan mengansumsikan bahwa konsumen akan mendapatkan value tersebut. Dibawah ini adalah keluaran yang kita harapkan.
Generate 76 Get 76 Generate 25 Get 25 Generate 34 Get 34 Generate 84 Get 84 Generate 48 Get 48 Generate 29 Get 29 Generate 26 Get 26 Generate 86 Get 86 Generate 65 Get 65 Generate 38 Get 38 Generate 46 Get 46
Untuk memperbaiki kode diatas, kita akan menggunakan method untuk komunikasi interthread. Implementasi dibawah ini adalah implementasi dari permasalahan produsen konsumen dengan menggunakan method untuk komunikasi interthread.
class SharedData { int data; boolean valueSet = false; synchronized void set( int value) { if( valueSet) { try { wait(); } catch( InterruptedException ie) { }
// baru saja membangkitkan sebuah nilai
} System. out. println(" Generate " + value); data = value;
Pengenalan Pemrograman 2 15