java ReentrantLock
线程同步工具。可以替代 synchronized .
private final ReentrantLock reentrantLock = new ReentrantLock();void testTask1 () {reentrantLock.lock(); // 获取锁try {System.out.println(Thread.currentThread().getName() + " 进入临界区");// 模拟执行业务逻辑Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();} finally {reentrantLock.unlock(); // 别忘记手动释放锁System.out.println(Thread.currentThread().getName() + " 释放锁");}}static void testReentrantLock(MyClass demo) {// 启动多个线程测试for (int i = 0; i < 5; i++) {new Thread(demo::testTask1).start();}}
打印结果:
ok
另外,ReentrantLock还可以和条件变量(Condition)配合,实现线程间协调,可代替wait()/notify() ,代码略