假设我有 -
public class ThreadingIssue {
public B b = new B();
}
class B{
private final Object lock = new Object();
public void someMethod(int timeOut){
synchronized(lock){
try{
lock.wait(timeOut);
}catch(Exception e){
}
// some task..
lock.notifyAll();
}
}
}
class Thread1 implements Runnable{
private ThreadingIssue t;
public Thread1(ThreadingIssue issue) {
t = issue;
}
public void run(){
while(true){
t.b.someMethod(5000);
}
}
}
class Thread2 implements Runnable{
private ThreadingIssue t;
public Thread2(ThreadingIssue issue){
t = issue;
}
public void run(){
try{
Thread.sleep(2000);
}catch(Exception e){
}
t.b = null;
}
}
Thread1会发生什么,如果它在someMethod(5000)
B 内部并等待锁定,并且 Thread2 已使 B 的对象为空?我不确定 Thread1 是否会抛出哪个异常..有什么帮助吗?