Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java SE 综合讨论区  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 请教线程间通信的问题
Butterfly_125





发贴: 26
积分: 0
于 2005-07-18 15:57 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
今天看了一下线程间通信的问题。有点不太清楚怎么用:
    /*
    *关于生产者和消费者问题
    */
    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()我还不太会用,能不
    能通过这个例子给我讲一下?谢谢大家!




话题树型展开
人气 标题 作者 字数 发贴时间
4567 请教线程间通信的问题 Butterfly_125 1487 2005-07-18 15:57
3447 Re:请教线程间通信的问题 dqgh0 80 2005-08-10 11:27
3570 Re:请教线程间通信的问题 ranchgirl 172 2005-08-10 12:55
3489 Re:请教线程间通信的问题 simbas 22 2005-08-13 21:33

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923