标题:多线程 为什么加了wait()函数 运行结果就和想象中的不同了
只看楼主
翔影
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2008-4-7
 问题点数:0 回复次数:0 
多线程 为什么加了wait()函数 运行结果就和想象中的不同了
哪位牛人帮我看看下面的代码  问题是如果现在注释掉wait()函数  读写正常(死循环 不间段的读写)  如果没有注释掉wait()函数部分 它只是写入一个数 看了老半天 都不知问题出在哪....????
(尽量多发表点看法啊 看和老师说的有什么不同)


package MultiPak;

import java.util.*;

public class ThreadDmeo {
   static boolean hasdate = true;
   static int date;

   public static void main(String agrv[])
   {
      Write w = new Write();
      Read r = new Read();
      w.start();
      r.start();
   }
}

class Write extends Thread{
   int count = 0;
   Random r = new Random();

   synchronized public void run()
   {
      for(;;){
        while (ThreadDmeo.hasdate == false) {
         /*try{
              wait();
          }
          catch(InterruptedException ie1)
          {
          }*/
        }
        count++;
        ThreadDmeo.date = r.nextInt();
        System.out.println("写入的第" + count + "个数是:" + ThreadDmeo.date);
        ThreadDmeo.hasdate = false;
        notify();
      }
   }
 }

class Read extends Thread{
    int count = 0;

    synchronized public void run()
    {
       for(;;){
         while (ThreadDmeo.hasdate == true) {
             /*try{
                wait();
             }
             catch(InterruptedException ie2)
             {
             }*/
         }
         count++;
         System.out.println("                   读出的第" + count + "个数是:" +
                            ThreadDmeo.date);
         ThreadDmeo.hasdate = true;
         notify();
       }
    }
 }
搜索更多相关主题的帖子: 线程 wait 函数 结果 运行 
2008-04-18 23:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-209846-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028780 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved