高并发编程-09-Lock

作者: LoveCoding | 来源:发表于2018-01-10 15:07 被阅读15次

    1,回顾

    到目前,我们讲了3个跟多个线程操作一个资源的技术点,主要涉及以下几个点:

    synchronized:原子性,重量级锁

    volatile:可见性,不保证原子性

    采用JDK提供的原子类

    2,Lock

    在JDK1.5后,为我们提供了Lock接口

    主要有三个特点

    1,明确加锁和解锁

    lock(),unlock()

    public class LockTest {

        private Lock lock = new ReentrantLock();

        public void lockTest(){

            try{

                lock.lock();

                System.out.println("do something...");

            }finally{

                lock.unlock();

            }

        }

    }

    2,可以尝试访问锁

    tryLock()

    3,可以构建公平锁,解决我们之前说的饥饿问题,实现公平性

    采用Lock的实现类ReentrantLock可以构建公平锁

    Lock lock = new ReentrantLock(true);//true就是为公平锁 fair

    思考题:

    如何实现一个自己的Lock?以及实现可重入?

    相关文章

      网友评论

        本文标题:高并发编程-09-Lock

        本文链接:https://www.haomeiwen.com/subject/jogbnxtx.html