/**
* 同一个lock,同一把锁
*/
Lock lock = new ReentrantLock();
/**
*
* 串行执行,相当于syn
*/
public void aaa() {
lock.lock();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("=============");
lock.unlock();
}
/**
* 一旦被锁,立即执行else
*/
public void bbb() {
if (lock.tryLock()){
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("=============");
lock.unlock();
}else {
System.out.println("没有抢到");
}
}
/**
* 四秒内可以争取,四秒之后还没有争夺到就else
*
*/
public void ccc() {
try {
if (lock.tryLock(4,TimeUnit.SECONDS)){
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("=============");
lock.unlock();
}else {
System.out.println("没有抢到");
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}