我正在开发与wait& amp相关的简单代码。 notify我创建了两个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();
}
}
}
但是在ThreadA类中,当我从b线程对象访问总计时,我得到了complie time错误..
System.out.println("Total is: " + b.totals);
请告诉我如何更正它以便我可以执行我的代码.. !!在此先感谢..!1
答案 0 :(得分:6)
这是当前的问题:
Thread b = new Thread();
您实际上从未创建ThreadB
的实例。 b
的类型仅为Thread
,而不是ThreadB
,这就是编译器无法解析totals
标识符的原因
此外:
wait
上拨打notify
和Thread
是一个非常糟糕的主意,因为Thread
类本身会调用wait
和notify
。 Runnable
而不是扩展Thread
,以便更好地分离问题。