class Info { private String name = "张三"; private String desc = "一个普通的人"; private boolean flag = false ; /* * false:表示不允许生产,但是允许取走内容 * true:表示允许生产,但是不允许取走 * */ public synchronized void set(String name,String desc){ if(!flag){ // 不能生产,要等待 try { super.wait() ; } catch (InterruptedException e) { e.printStackTrace(); } } this.setName(name) ; try { Thread.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); } this.setDesc(desc) ; this.flag = false ; // 不能生产了 super.notify() ; // 唤醒其他等待的线程 } public synchronized void get(){ if(flag){ // 不能取走,要等待 try { super.wait() ; } catch (InterruptedException e) { e.printStackTrace(); } } try { Thread.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(this.name + " --> " + this.desc) ; this.flag = true ; super.notify() ; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; }}