下面是一段简单的代码选择题,你有信心答对吗?
public class Test {
public static void main(String[] args) {
//创建一个资源对象
final Resources resource = new Resources();
//设置开始时间
long start = new Date().getTime();
//开启第一个线程去获取资源
new Thread(){
public void run(){
resource.getResources();
}
}.start();
//开启第二个线程去获取资源
new Thread(){
public void run(){
resource.getResources();
}
}.start();
//当有两个线程完成了获取资源,主线程开始统计用时
while(resource.over<2){
}
//打印程序所花的时间
long end = new Date().getTime();
System.out.println("程序所花的时间=" + (end-start));
}
}
class Resources{
public Integer r1 = 200000000;
public int over = 0;
public void getResources(){
//*******************************
//insert code here
//******************************
synchronized(Resources.class){
over++;
}
}
}
A
synchronized(Resources.class){
for(int i=0 ; i<100000000;i++){
r1--;
}
}
B
for(int i=0 ; i<100000000;i++){
r1--;
}
如果你认为理所当然是B用的时间会短一些,请尝试执行一下代码。