概述
tryLock()方法是有返回值的,它表示用来尝试获取锁,如果获取成功,则返回true,如果获取失败(即锁已被其他线程获取),则返回false,这个方法无论如何都会立即返回。在拿不到锁时不会一直在那等待。
代码
- @Test
- public void testTryLock() {
- Lock lock = new ReentrantLock();
-
- new Thread() {
- @Override
- public void run() {
- String tName = Thread.currentThread().getName();
-
- if (lock.tryLock()) {
- System.out.println(tName + "获取到锁!");
- } else {
- System.out.println(tName + "获取不到锁!");
- return;
- }
-
- try {
-
- for (int i = 0; i < 5; i++) {
- System.out.println(tName + ":" + i);
- }
-
- Thread.sleep(5000);
- } catch (Exception e) {
- System.out.println(tName + "出错了!!!");
- } finally {
- System.out.println(tName + "释放锁!!");
- lock.unlock();
- }
-
- }
- }.start();
-
- new Thread() {
- @Override
- public void run() {
- String tName = Thread.currentThread().getName();
-
- if (lock.tryLock()) {
- System.out.println(tName + "获取到锁!");
- } else {
- System.out.println(tName + "获取不到锁!");
- return;
- }
-
- try {
- for (int i = 0; i < 5; i++) {
- System.out.println(tName + ":" + i);
- }
-
- } catch (Exception e) {
- System.out.println(tName + "出错了!!!");
- } finally {
- System.out.println(tName + "释放锁!!");
- lock.unlock();
- }
- }
- }.start();
- }
运行结果
Thread-0获取到锁!
Thread-0:0
Thread-0:1
Thread-0:2
Thread-0:3
Thread-0:4
Thread-1获取不到锁!