码迷,mamicode.com
首页 > 其他好文 > 详细

Lock与synchronized的区别

时间:2015-08-11 22:53:24      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

   synchronized是属于jvm层面的,如果遇到异常,jvm会自动释放锁.lock锁的释放是需要程序员操作,如果不释放就会产生死锁

在竞争不激烈的情况下,偶尔会有同步的情况发生,如果用synchronized会好一点,如果竞争很激烈的情况下,使用reentrantLock会好一点.

package org.fkjava.oa.base;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;



public class Chen{
    Lock lock = new ReentrantLock();
    
    public void f(){
        try {
            lock.lock();
            for(int i=0;i<5;i++){
                System.out.println("f(),i=" + i);
                Thread.currentThread().sleep(1000);
            }
        } catch (Exception e) {
            // TODO: handle exception
        }finally{
            lock.unlock();
        }
    }
    public void g(){
        try {
            lock.lock();
            for(int i=0;i<5;i++){
                System.out.println("g(),i=" + i);
                Thread.currentThread().sleep(1000);
            }
        } catch (Exception e) {
            // TODO: handle exception
        }finally{
            lock.unlock();
        }
        
    }
    public static void main(String[] args) {
        final Chen c = new Chen();
        new Thread(){
            @Override
            public void run() {
                    c.f();
            }
        }.start();
        new Thread(){
            @Override
            public void run() {
                    c.g();
            }
        }.start();
    }
}

 

Lock与synchronized的区别

标签:

原文地址:http://www.cnblogs.com/homesea/p/4722329.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!