关于等待和通知

dgh*_*htr 0 java

我正在开发与wait¬ify相关的简单代码我创建了两个seprate类,下面是类

    class ThreadA {
 public static void main(String [] args) {
 Thread b = new Thread();
 b.start();

 synchronized(b) {
 try {
 System.out.println("Waiting for b to complete...");
 b.wait();
} catch (InterruptedException e) {}
 //System.out.println("Total is: " + b.totals);
 }
}
}

and the other one is ...





class ThreadB extends Thread {
public  int totals;

 public void run() {
     synchronized(this) {
     for(int i=0;i<100;i++) {
      totals += i;
      }
      notify();
      }
      }
     }
Run Code Online (Sandbox Code Playgroud)

但是在ThreadA类中,当我从b线程对象访问总计时,我得到了complie时间错误.

System.out.println("Total is: " + b.totals);
Run Code Online (Sandbox Code Playgroud)

请告诉我如何纠正它,以便我可以执行我的代码.. !! 在此先感谢..!1

Jon*_*eet 6

这是当前的问题:

Thread b = new Thread();
Run Code Online (Sandbox Code Playgroud)

你永远不会真正创建一个实例ThreadB.b只是类型Thread,而不是ThreadB编译器无法解析totals标识符的原因

另外:

  • 公共字段是一个非常糟糕的主意 - 改为使用属性
  • 调用waitnotifyon Thread是一个非常糟糕的主意,因为Thread类本身调用waitnotify.
  • 您通常应该实施Runnable而不是扩展Thread,以便更好地分离关注点.
  • 通常最好在您的班级上调用一些知道在监视器上同步的内容,该监视器对该代码可见,而不是同步(和等待)公开可见的监视器.它可以更容易地推断您的线程.