Butterfly_125
发贴: 26
积分: 0
|
于 2005-07-18 15:57
今天看了一下线程间通信的问题。有点不太清楚怎么用: /* *关于生产者和消费者问题 */ class Q { private String name = "袁平"; private String sex = "男"; boolean bFull = false; public synchronized void put(String name,String sex) { if(bFull) wait(); this.name = name; try { Thread.sleep(10); } catch(Exception e) { System.out.println(e.getMessage()); } this.sex = sex; bFull = true; notify(); //这个notify()应该唤醒get()中的wait()吧? } public synchronized void get() { if(!bFull) wait(); System.out.println(name + "----->" + sex); bFull = false; notify(); //这个notify()应该唤醒put()中的wait()吧? } }
class Producer implements Runnable //生产者 { Q q = null; public Producer(Q q) { this.q = q; } public void run() { int i = 0; while(true) { if(i==0) q.put("袁平","男"); else q.put("王燕","女"); i=(i+1)%2; } } }
class Consumer implements Runnable //消费者 { Q q = null; public Consumer(Q q) { this.q = q; } public void run() { while(true) { q.get(); } } }
public class ThreadCommunation { public static void main(String [] args) { Q q = new Q(); new Thread(new Producer(q)).start(); new Thread(new Consumer(q)).start(); } } 其中,notify()是不是要标明要唤醒哪个方法中的wait()?wait() and notify()我还不太会用,能不 能通过这个例子给我讲一下?谢谢大家!
|