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.不会做,请分析一下
解决方案 »
- 关于List取值问题,各位帮帮忙啊
- 求好一点的JSP和servlet的教程
- com.microsoft.sqlserver.jdbc.SQLServerException: INSERT 语句与 CHECK 约束"CK__stud__s
- 从1到100中,如果其中有一个数丢了,如何找出这个数,有几种方法?集合框架怎么做呢?
- java 连接sql server 2000 数据库问题,请高手指点,不胜感激
- 请问swing的程序运行特别慢是怎么回事?
- 求一款好的java反编译器,在线等
- 如何在jscrollpane中显示最新的内容
- 谁能帮我解释一下这段代码中的疑惑,有关引用类型的
- 请问:怎样才能了解java的原理
- 各位,能不能用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.