综合实战:生产者与消费者(利用Object类解决重复操作)

来源:互联网 发布:python 函数 传入list 编辑:程序博客网 时间:2024/06/05 17:00


上幹貨之前給大家分享個面試題。

如下:請問sleep() 和 wait() 的區別?

答案在最下面。

class Info {private String name;private String description;private boolean flag=true;public synchronized void set(String name, String description) {if(flag==false){try {super.wait();} catch (InterruptedException e) {e.printStackTrace();}}this.name = name;try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}this.description = description;flag=false; super.notify();}public synchronized void get() {if(flag==true){try {super.wait();} catch (InterruptedException e) {e.printStackTrace();}}System.out.println(this.name + "---------->" + this.description);flag=true;super.notify();}}class Pr implements Runnable {private  Info info;public Pr(Info info) {this.info = info;}@Overridepublic void run() {for (int i = 0; i < 50; i++) {if (i % 2 == 0) {this.info.set("TOM", ":BOY");} else {this.info.set("MARY", ":GIRY");}}}}class Cr implements Runnable {private Info info;public Cr(Info info) {this.info = info;}@Overridepublic void run() {for (int i = 0; i < 50; i++) {this.info.get();}}}public class Demo {public static void main(String[] args) {Info info = new Info();Pr pr = new Pr(info);Cr cr = new Cr(info);new Thread(pr).start();new Thread(cr).start();}}

答:1.sleep()是Thread類定義的中的方法,在休眠一段時間自己喚醒。

       2.wait () 是Object類定義的方法,表示綫程需要等待執行,并且衹能通過notify()、notifyAll()方法來進行喚醒。

阅读全文
0 0
原创粉丝点击