多项选择题

class Waiting implements Runnable { 
boolean flag = false; 
public synchronized void run() { 
if (flag) { 
flag = false; 
System.out.print("1 "); 
try { this.wait(); } catch (Exception e) { } 
System.out.print("2 "); 
} 
else { 
flag = true; 
System.out.print("3 "); 
try { Thread.sleep(2000); } catch (Exception e) { } 
System.out.print("4 "); 
notify(); 
} 
} 
public static void main(String [] args) { 
Waiting w = new Waiting(); 
new Thread(w).start(); 
new Thread(w).start (); 
} 
} 
以下哪两项是正确的?() 

A.代码输出 1 3 4
B.代码输出 3 4 1
C.代码输出 1 2 3 4
D.代码不会完成