合肥营销型网站建设公司,网站建设完成汇报,摄像网站建设,智通人才网招聘网东莞官网概述 tryLock(long time, TimeUnit unit)方法和tryLock()方法是类似的#xff0c;只不过区别在于这个方法在拿不到锁时会等待一定的时间#xff0c;在时间期限之内如果还拿不到锁#xff0c;就返回false。如果一开始拿到锁或者在等待期间内拿到了锁#xff0c;则返回true。…概述 tryLock(long time, TimeUnit unit)方法和tryLock()方法是类似的只不过区别在于这个方法在拿不到锁时会等待一定的时间在时间期限之内如果还拿不到锁就返回false。如果一开始拿到锁或者在等待期间内拿到了锁则返回true。 代码 Testpublic void testTryLock2() throws Exception {Lock lock new ReentrantLock();new Thread() {Overridepublic void run() {String tName Thread.currentThread().getName();try {//获取不到锁就等7秒如果7秒后还是获取不到就返回falseif (lock.tryLock(7000, TimeUnit.MILLISECONDS)) {System.out.println(tName 获取到锁);} else {System.out.println(tName 获取不到锁);return;}} catch (Exception e) {e.printStackTrace();}try {for (int i 0; i 5; i) {System.out.println(tName : i);}Thread.sleep(3000);} catch (Exception e) {System.out.println(tName 出错了);} finally {System.out.println(tName 释放锁);lock.unlock();}}}.start();new Thread() {Overridepublic void run() {String tName Thread.currentThread().getName();try {//获取不到锁就等7秒如果7秒后还是获取不到就返回falseif (lock.tryLock(7000, TimeUnit.MILLISECONDS)) {System.out.println(tName 获取到锁);} else {System.out.println(tName 获取不到锁);return;}} catch (Exception e) {e.printStackTrace();}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.sleep(15000);//主线程}运行结果 Thread-0获取到锁 Thread-0:0 Thread-0:1 Thread-0:2 Thread-0:3 Thread-0:4 Thread-0睡觉...... Thread-0醒了...... Thread-0释放锁 Thread-1获取到锁 Thread-1:0 Thread-1:1 Thread-1:2 Thread-1:3 Thread-1:4 Thread-1释放锁