Question 129
Given:
1. public class TestSeven extends Thread {
2. private static int x;
3. public synchronized void doThings() {
4. int current = x;
5. current++;
6. x = current;
7. }
8. public void run() {
9. doThings();
10. }
1 1.}
Which is true?
A. Compilation fails.
B. An exception is thrown at runtime.
C. Synchronizing the run() method would make the class thread-safe.
D. The data in variable “x” are protected from concurrent access
problems.
E. Declaring the doThings() method as static would make the class
thread-safe.
F. Wrapping the statements within doThings() in a synchronized(new
Object()) { } block would make the class thread-safe.不会做,请分析一下
Given:
1. public class TestSeven extends Thread {
2. private static int x;
3. public synchronized void doThings() {
4. int current = x;
5. current++;
6. x = current;
7. }
8. public void run() {
9. doThings();
10. }
1 1.}
Which is true?
A. Compilation fails.
B. An exception is thrown at runtime.
C. Synchronizing the run() method would make the class thread-safe.
D. The data in variable “x” are protected from concurrent access
problems.
E. Declaring the doThings() method as static would make the class
thread-safe.
F. Wrapping the statements within doThings() in a synchronized(new
Object()) { } block would make the class thread-safe.不会做,请分析一下
解决方案 »
- 问几个h i b e r n a t e的问题!不知道有没有人愿意回答!
- MulticastSocket的receive方法一直报错 就算按照JDK上面的列子还是报错,懂的人进来指导下 谢谢
- 算法设计问题
- 退出线程问题
- textArea如何按自动换行获得文字
- 关于接口
- 在看JAVA2核心技术(第6版)的上册(机械工业出版社)的朋友请进来
- RMI中Naming.rebind()的第一个参数URL字符串和Naming.lookup()的参数有什么区别?
- Java字库的文字
- 有谁知道JBuilder 7的注册码??
- 各位,能不能用ObjectInputStream去封装DataInputStream去读取发过来的对象
- 急!50分求解一面试题
private static int x; public synchronized void doThings() {
int current = x;
current++;
x = current;
} public void run() {
doThings();
} public static void main(String[] args){
TestSeven s=new TestSeven();
s.start();
}
}
我感觉doThings方法是线程安全的,run方法里只有一个doThings方法,那么run应该也是线程安全的。
public void doThings() {
try{
Thread.sleep((int)(Math.random()*1000));
}catch(InterruptedException ee){
ee.printStackTrace();
}
synchronized(自定设置个静态对象){//这里加最好
int current = x;
current++;
x = current;
}
System.out.println( Thread.currentThread()+""+ x);
}
选E.