實驗證明不在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,執行完畢後某一個線程會使用帶鎖的方法並一直到結束,結束後,下一個進程才能繼續使用