62,614
社区成员
发帖
与我相关
我的任务
分享
import java.util.concurrent.locks.*;
//......
public static void main(String[] args) {
// ......
Lock myLock=new ReentrantLock();
myLock.lock();
try{
//critical section;
}
finally{
myLock.unlock();
}
//.....
class A{
public synchronizied void m1(){
................
}
private Object object = new Object();
public void m2(){
synchronizied(object){}
}
}
class ThreadA extends Thread{
private A a;
public ThreadA(A a){
this.a = a;
}
public void run(){
a.m1();
}
}
public class TestThread{
public static void main(String[] args){
A a = new A();
Thread t = new ThreadA(a);
t.start();
a.m2();
}
}
上面的这种情况m1和m2这2个方法虽然是同步的,但是他们的锁不同,m1得到的是A的一个类对象(实例)的锁,而m2则是的到的synchronizied(object),object的锁,他们2个的同步是独立的,这中情况下,这2个线程不会产生阻塞状态。不知道说没说没明白,是不是你要所表达的意思