1. 程式人生 > >多執行緒synchronized 鎖XXX.class和鎖this的區別記錄

多執行緒synchronized 鎖XXX.class和鎖this的區別記錄

Mythread extends Thread

synchronized (Mythread.class) {

    //鎖類  即此類的例項擁有共同的鎖 即鎖共有 @@可以當成是類變數的感覺..所以物件共享

}

synchronized (this) {

    //鎖物件  即各例項都有各自的鎖   @無意義

}

但如果是實現自runable介面則可以使用this

MyThread implements Runnable

MyThread my = new MyThread();

Thread t = new Thread(my);

Thread t2 = new Thread(my);

Thread t3 = new Thread(my);

因建立執行緒物件不同  因為runable方式的幾條執行緒是共享一個物件

查閱文件 JDK5以後有Lock鎖可代替  可不知因何測後仍有同步問題..可能是方式不對

其實為了避免問題 倆種執行緒方式都可直接鎖 xxx.class 即可