java.util.concurrent.locks
lock接口中的方法:
void lock()获取锁
void unlock()释放锁
使用步骤:
java.util.concurrent.locks.ReentrantLock接口
使用步骤:
1.在成员位置创建ReentrantLock对象
2.在可能会出现安全问题的代码前调用Lock接口中的方法Lock获取锁
3.在可能会出现安全问题的代码后调用Lock接口中的方法unLock释放锁
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class RunnableImpl implements Runnable { private int ticket=100; //Object obj=new Object();//创建锁对象,三个进程用一个锁对象。 Lock l=new ReentrantLock(); @Override public void run() { System.out.println(this);// while (true){ l.lock(); if (ticket>0){ //票存在,卖票ticket try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+"-->正在卖"+ticket+"张票"); ticket--; } l.unlock(); } } }
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class RunnableImpl implements Runnable { private int ticket=100; //Object obj=new Object();//创建锁对象,三个进程用一个锁对象。 Lock l=new ReentrantLock(); @Override public void run() { System.out.println(this);// while (true){ l.lock(); if (ticket>0){ //票存在,卖票ticket try { Thread.sleep(10); System.out.println(Thread.currentThread().getName()+"-->正在卖"+ticket+"张票"); ticket--; } catch (InterruptedException e) { e.printStackTrace(); }finally { l.unlock(); } } } } }