本帖最后由 徐盼盼 于 2013-3-18 16:53 编辑
Lock和synchronized 都可以实现同步,但是Lock比synchronized 有什么优点呢?在代码中怎么体现出来?有地方说Lock是以非阻塞方式去拿锁,这个怎么体现出来的呢?- class Subtractor implements Runnable{
- private Lock lock =new ReentrantLock();
-
- private int j=10000;
-
- public void run() {
-
- while(true)
- {
- lock.lock();
- try
- {
- System.out.println("j--=" + j--);
- if(j<0){
- break;
- }
- }finally
- {
- lock.unlock();
- }
- }
- }
- }
- class Subtractor2 implements Runnable{
-
- private int j=10000;
-
- public void run() {
-
- while(true)
- {
- synchronized (this) {
- System.out.println("j--="+ j--); //这里抛异常了,锁能释放吗?
- if(j<0){
- break;
- }
- }
- }
- }
- }
复制代码 |