synchronized:在代码里,synchronized类似“面向对象”,修饰类、方法、对象。
Lock:不作为修饰,类似“面向过程”,在方法中需要锁的时候lock,在结束的时候unlock(一般都在finally块里)。
例如代码:
Java代码
public void method1() {
synchronized(this){//旧锁,无需人工释放
System.out.println(1);
}
}
public void method2() {
Lock lock = new ReentrantLock();
lock.lock();//上锁
try{
System.out.println(2);
}finally{
lock.unlock();//解锁
}
}
其次说说性能其次说说性能其次说说性能其次说说性能。。。。 相关的性能测试网上已经有很多,这里也直接拿来主义,给出结论: 在并发高是,luck性能优势很明显,在低并发时,synchronized也能取得优势。具体的
|