java并发锁-Lock接口

来源:互联网 发布:网络名人周小平 编辑:程序博客网 时间:2024/04/29 09:10

并发锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。在Lock接口出现之前,java主要依靠synchronized的关键字来实现多线程的同步功能。而从JDK1.5之后,并发包中新增了Lock接口来实现并发锁的功能,它提供了与synchronized关键字类似的同步功能,但是需要在使用时需要显示的获取锁和释放锁。与synchronized相比缺少了隐式的获取和释放锁的便捷性,但是却拥有了锁获取和释放的可操作性、可中断的获取锁以及超时获取锁等多种synchronized关键字锁不具备的同步特效。

Lock的API如下

void lock();//获取锁,调用该方法当前线程会获取锁,当锁或得后,从该方法返回

void lockInterruptibly() throws TnterruptedException;//可中断的获取锁,和lock()方法的不同之处在于该方法会响应中断,即在锁的获取中可以众多当前线程

boolean tryLock();//尝试非阻塞的获取锁,调用该方法后会立刻返回,如果能够获取锁则返回true,否则返回false

boolean tryLock(long time,TimeUnit unit) throws InterruptedException;//超时的获取锁,如果在超时时间内获得锁返回true,超时时间结束返回false

void unlock();//释放锁

Condition newCondition();//获取等待通知组件,该组件和当前的锁绑定,当前线程只有获得了锁,才能调用该组件的wait()方法,而调用后,当前线程将释放锁。


0 1
原创粉丝点击