1. 选择题
1)1、执行如下程序,输出结果是( C)
class Test {
private int data;
int result = 0;
public void m() {
result += 2;
data += 2;
System.out.print(result + " " + data);
}
}
class ThreadExample extends Thread {
private Test mv;
public ThreadExample(Test mv) {
this.mv = mv;
}
public void run() {
synchronized(mv){
mv.m();
}
}
}
class ThreadTest {
public static void main(String args[]) {
Test mv = new Test(); // 声明并初始化对data赋默认值
Thread t1 = new ThreadExample(mv);
Thread t2 = new ThreadExample(mv);
Thread t3 = new ThreadExample(mv);
t1.start();
t2.start();
t3.start();
}
}
A、0 22 44 6
B 、2 42 42 4
C、2 24 46 6
D、4 44 46 6
解答:
① 使用synchronized关键字加同步锁,使三个线程依次顺序操作m() 方法
② t1.start(); 使得result=2,data=2,输出即为2 2
t2.start(); 使得result=4,data=4,输出即为4 4
t3.start(); 使得result=6,data=6,输出即为6 6
③ System.out.print(result +" "+ data);
是print()方法,不会自动换行,所以输出结果为2 24 46 6
2)要使对象具有序列化能力,则其类应该实现如下哪个接口(A)
A、java.io.Serializable
B 、java.lang.Cloneable
C、java.lang.CharSequence
D、java.lang.Comparable
解答:
A: 专门提供给类实现序列化的
B: 实现克隆方法的;Object.clone() 方法可以合法地对该类实例进行按字段复制
C: CharBu