🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。 * Lock接口中的常用方法 ![](https://box.kancloud.cn/df1cd9dc127cbea1cf9bc3b43a5f247e_510x238.jpg) Lock提供了一个更加面对对象的锁,在该锁中提供了更多的操作锁的功能。 我们使用Lock接口,以及其中的lock()方法和unlock()方法替代同步 ~~~ public class Ticket implements Runnable { //共100票 int ticket = 100; //创建Lock锁对象 Lock ck = new ReentrantLock(); @Override public void run() { //模拟卖票 while(true){ //synchronized (lock){ ck.lock(); if (ticket > 0) { //模拟选坐的操作 try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "正在卖票:" + ticket--); } ck.unlock(); //} } } } ~~~