This question is from the examulator mock exam
public class Agg{
public static void main(
String argv[]){
Agg a = new Agg();
a.go();
}
public void go(){
DSRoss ds1 = new DSRoss("one");
ds1.start();
}
}
class DSRoss extends Thread{
private String sTname="";
DSRoss(String s){
sTname = s;
}
public void run(){
notwait();
System.out.println("finished");
}
public void notwait(){
while(true){
try{
System.out.println("waiting");
wait(); }catch(InterruptedException ie){}
System.out.println(sTname);
notifyAll();
}
}
}
1 It will cause a compile time error
2 Compilation and output of "waiting"
3 Compilation and output of "waiting" followed by "finished"
4 Runtime error, an exception will be thrown
I choosed 1 (compile time error) because the wait is done without synchronize, but in the answer it's said the correct response is 4 (Runtime error) for the same reason (wait without synchronize).
When I try to compile this code, it shows a compile error (as I I reponded). So is the
java.lang.IllegalMonitorStateException compile time or a runtime error ?