/* * »§°øÀå * 06. »§°øÀåÀ» ÀÛ¼º * 07. »§À» °¡Á®°¡´Â ¸Þ¼Òµå¸¦ ÀÛ¼º * 08. »§À» Áø¿­ÇÏ´Â ¸Þ¼Òµå¸¦ ÀÛ¼º */ import java.util.*; public class BakerStack { private Vector buff = new Vector(300,300); // »§À» °¡Á®°¡´Â ¸Þ¼Òµå pop() public synchronized String pop() { String bread; // »§À» ¹Þ´Â º¯¼ö ½ºÆ®¸µÀ¸·Î ¼±¾ð // ¹æÀÌ Áø¿­´ë¿¡ ¾øÀ» °æ¿ì while(buff.size() == 0) { try { System.out.println("»§ÀÌ ´õ ÀÌ»ó ¾ø½À´Ï´Ù. Àá½Ã¸¸ ±â´Ù·Á ÁÖ¼¼¿ä!"); this.wait(); // deadlock»óŸ¦ ¹æÁöÇϱâ À§ÇØ wait¸Þ¼Òµå È£Ãâ } catch(InterruptedException e) { System.out.println("´©±¸³Ä? ³» »§"); } } bread = (String)buff.remove(buff.size()-1); // »§ÀÌ ³ª°¡¸é º¤ÅÍ¿¡ Çϳª¾¿ ºüÁ®³ª°¡±â À§ÇØ return bread; // ¸®ÅÏ°ªÀ» StringÀ¸·Î ´øÁ®ÁÜ } //»§À» Áø¿­ÇÏ´Â push() public synchronized void push(String bread) { System.out.println("±â´Ù¸®½Ã´À¶ó ¼ö°íÇϼ̾î¿ä. ¸ÀÀÖ°Ô µå¼¼¿ä"); this.notify(); //Áø¿­´ë¿¡ »§ Ãß°¡ buff.addElement(bread); //buff.add(bread); } }