20.Given the following.
public class SyncTestInner{
public static void main(String[] args) {
Thread t = new Thread(){
Foo f = new Foo();{
f.increase(20);
}
};
t.start();
}
}
and assuming that data must be protected from corruption, what - if anything - can you add to the preceding code to ensure the integrity of data?
A. Synchronize the run method.
B. Warp a synchronize(this) around the call to f.increase().
C. The existing code will not compile.
D. The existing code will cause a runtime exception.
E. Put in a wait() call prior to invoking the increase() method.
F. Synchronize the increase() method.
(F).
21.Given the following.
1. public class Test{
2. public static void main(String[] args) {
3. final Foo f = new Foo();
4. Thread t = new Thread(new Runnable()){
5. public void run(){
6. f.doStuff();
7. }
8. }};
9. Thread g = new Thread(){
10. public void run(){
11. f.doStuff();
12. }
13. };
14. t.start();
15. g.start();
16. }
17. }
1. class Foo{
2. int x = 5;
3. public void doStuff(){
4. if(x<10){
5. //nothing to do
6. try{
7. wait();
8. }catch(InterruptedException ex){}
9. } else() {
10. System.out.println("x is " + x++);
11. if(x>=10){
12. notify();
13. }
14. }
15. }
16.}
what is the result?
A.The code will not compile because of an error on line 12 of class Foo.
B.The code will not compile because of an error on line 7 of class Foo.
C.The code will not compile because of an error on line 12 of class Test.
D.The code will not compile because of some other error in class Test.
E.An exception occurs at runtime.
F.x is 5
x is 6
(E).因为线程在调用wait()时不属于对象的锁,如果方法是同步的,代码将在运行时会发生异常。
本文地址:http://com.8s8s.com/it/it14960.htm