tryLock()方法简介
tryLock()方法是java中的一种同步锁机制,它可以让线程在尝试获取锁的时候有一定的延迟,可以指定延迟时间,并且可以决定是否等待锁。它的作用是尝试获取锁,如果获取成功,则返回true,否则返回false。
tryLock()方法的使用
tryLock()方法的使用很简单,只需要在想要获取锁的地方调用它即可。它有两个重载方法:
- tryLock():尝试获取锁,如果获取成功,则返回true,否则返回false。
- tryLock(long time, TimeUnit unit):尝试获取锁,如果在指定的时间内获取成功,则返回true,否则返回false。
tryLock()方法的实例
public class TryLockDemo { private static Lock lock = new ReentrantLock(); public static void main(String[] args) { new Thread(() -> test()).start(); new Thread(() -> test()).start(); } public static void test() { if (lock.tryLock()) { try { System.out.println(Thread.currentThread().getName() + "获取锁成功"); } finally { lock.unlock(); } } else { System.out.println(Thread.currentThread().getName() + "获取锁失败"); } } }
上面的代码是一个使用tryLock()方法的实例,在main()方法中,创建了两个线程,都调用test()方法。test()方法中,使用tryLock()方法尝试获取锁,如果获取成功,则进行相关操作,获取失败则打印获取锁失败。
运行结果:
- Thread-0获取锁成功
- Thread-1获取锁失败
从结果可以看出,Thread-0获取锁成功,Thread-1获取锁失败,说明tryLock()方法可以实现锁的有效控制。
tryLock()方法的优缺点
tryLock()方法的优点是可以指定延迟时间,可以决定是否等待锁,可以有效控制锁的获取,避免线程长时间的等待。缺点是无法指定锁的释放时间,可能会出现死锁的情况。