带你理解Lock锁原理

同样是锁,先说说synchronized和lock的区别:

synchronized是java关键字,是用c++实现的;而lock是用java类,用java可以实现

synchronized可以锁住代码块,对象和类,但是线程从开始获取锁之后开发者不能进行控制和了解;lock则用起来非常灵活,提供了许多api可以让开发者去控制加锁和释放锁等等。

写个Demo

static Lock lock = new ReentrantLock();
public
static void main(String[] args) throws InterruptedException { lock.lock();//其他没拿到锁的卡住不动 Thread thread = new Thread(new Runnable() { @Override public void run() { System.out.println("start to get lock Interruptibly"); lock.unlock(); //看看会发生什么,注释掉再看看 lock.lock(); System.out.println("拿到锁"); lock.unlock(); System.out.println("释放锁"); } }); thread.start(); Thread.sleep(3000); lock.unlock(); }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssdpd.html