package jdk_concurrent;import java.util.concurrent.locks.ReentrantLock;public class TryLock implements Runnable {public static ReentrantLock lock1 = new ReentrantLock();public static ReentrantLock lock2 = new ReentrantLock();int lock;// 控制加锁顺序,方便构造死锁public TryLock(int lock) {this.lock = lock;}public static void main(String[] args) throws InterruptedException {TryLock r1 = new TryLock(1);TryLock r2 = new TryLock(2);Thread t1 = new Thread(r1);Thread t2 = new Thread(r2);t1.start();t2.start();}@Overridepublic void run() {if(lock==1){while(true){if (lock1.tryLock()) {try {try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}if (lock2.tryLock()) {try {System.out.println(Thread.currentThread().getId() + ": My jod done.");return;} finally {lock2.unlock();}}} finally {lock1.unlock();}}}}else{while(true){if (lock2.tryLock()) {try {try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}if (lock1.tryLock()) {try {System.out.println(Thread.currentThread().getId() + ": My jod done.");return;} finally {lock1.unlock();}}} finally {lock2.unlock();}}}}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。