package 对象及变量的并发访问2;
import sun.security.util.AuthResources_it;
/**
* synchronized方法的弊端
*/
class Taskt2210{
private String getDate1;
private String getDate2;
public synchronized void doLongTimeTask(){
try {
System.out.println("begin task");
Thread.sleep(3000);
getDate1="长时间处理任务后从远程返回的值1 threadName="+Thread.currentThread().getName();
getDate2="长时间处理任务后从远程返回的值2 threadName="+Thread.currentThread().getName();
System.out.println(getDate1);
System.out.println(getDate2);
System.out.println("end task");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
class CommonutilsT2210{
public static long beginTime1;
public static long endTime1;
public static long beginTime2;
public static long endTime2;
}
class MyThreadT2110 extends Thread{
private Taskt2210 taskt2210;
public MyThreadT2110(Taskt2210 taskt2210){
super();
this.taskt2210=taskt2210;
}
@Override
public void run() {
super.run();
CommonutilsT2210.beginTime1=System.currentTimeMillis();
taskt2210.doLongTimeTask();
CommonutilsT2210.endTime1=System.currentTimeMillis();
}
}
class MyThread2T2110 extends Thread{
private Taskt2210 taskt2210l;
public MyThread2T2110(Taskt2210 taskt2210){
super();
this.taskt2210l=taskt2210;
}
@Override
public void run() {
super.run();
CommonutilsT2210.beginTime2=System.currentTimeMillis();
taskt2210l.doLongTimeTask();
CommonutilsT2210.endTime2=System.currentTimeMillis();
}
}
class RunT2110{
public RunT2110(){
Taskt2210 taskt2210=new Taskt2210();
MyThreadT2110 myThreadT2110=new MyThreadT2110(taskt2210);
myThreadT2110.start();
MyThread2T2110 myThread2T2110=new MyThread2T2110(taskt2210);
myThread2T2110.start();
try {
//为了造成时差
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
long beginTime=CommonutilsT2210.beginTime1;
if(CommonutilsT2210.beginTime2<CommonutilsT2210.beginTime1){
beginTime=CommonutilsT2210.beginTime2;
}
long endTime=CommonutilsT2210.endTime1;
if(CommonutilsT2210.endTime2>CommonutilsT2210.endTime1){
endTime=CommonutilsT2210.endTime2;
}
System.out.println("耗时:"+((endTime-beginTime)/1000));
}
}
public class T2201 {
public static void main(String[] args) {
RunT2110 runT2110=new RunT2110();
}
}
08-02
868
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)