实验证明不在synchronized块中就是异步执行,在synchronized就是同步执行
public class Task {
public void doLongTimeTask() {
for(int i=0;i<100;i++) {
System.out.println("nosynchronized threadName="+Thread.currentThread().getName()+" i=="+(i+1));
}
System.out.println("");
synchronized (this) {
for(int i=0;i<100;i++) {
System.out.println("synchronized threadName="+Thread.currentThread().getName()+" i=="+(i+1));
}
}
}
}
说明:两个线程同时调用方法doLongTimeTask
结果说明:先是两个线程同时输出nosynchronized,执行完毕后某一个线程会使用带锁的方法并一直到结束,结束后,下一个进程才能继续使用