單項(xiàng)選擇題

void waitForSignal() { 
Object obj = new Object(); 
synchronized (Thread.currentThread()) { 
obj.wait(); 
obj.notify(); 
} 
} 
Which is true?() 

A. This code may throw an InterruptedException.
B. This code may throw an IllegalStateException.
C. This code may throw a TimeoutException after ten minutes.
D. This code will not compile unless “obj.wait()” is replaced with “((Thread) obj).wait()”.
E. Reversing the order of obj.wait() and obj.notify() may cause this method to complete normally.
F. A call to notify() or notifyAll() from another thread may cause this method to complete normally.

題目列表

你可能感興趣的試題

多項(xiàng)選擇題

public class Transfers { 
public static void main(String[] args) throws Exception { 
Record r1 = new Record(); 
Record r2 = new Record(); 
doTransfer(r1, r2, 5); 
doTransfer(r2, r1, 2); 
doTransfer(r1, r2, 1); 
// print the result 
System.out.println(”rl = “ + r1.get() +“, r2=” + r2.get()); 
} 
private static void doTransfer( 
final Record a, final Record b, final int amount) { 
Thread t = new Thread() { 
public void run() { 
new Clerk().transfer(a, b, amount); 
} 
}; 
t.start(); 
} 
} 
class Clerk { 
public synchronized void transfer(Record a, Record b, int amount){ 
synchronized (a) { 
synchronized (b) { 
a.add(-amount); 
b.add(amount); 
} 
} 
} 
} 
class Record { 
int num=10; 
public int get() { return num; } 
public void add(int n) { num = num + n; } 
} 
If Transfers.main() is run, which three are true?()

A. The output may be “r1 = 6, r2 = 14”.
B. The output may be “r1 = 5, r2 = 15”.
C. The output may be “r1 = 8, r2 = 12”.
D. The code may run (and complete) with no output.
E. The code may deadlock (without completing) with no output.
F. M IllegalStateException or InterruptedException may be thrown at runtime.

微信掃碼免費(fèi)搜題