Lock的用法

    xiaoxiao2021-03-25  97

    package test45; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /*** * * @author samsung * *虽然我们理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加了锁,在哪里解了锁 *为了更清晰的表达如何加锁和释放锁,JDK5提供了一个新的对象Lock *Lock: * void lock();获取锁 * void unlock();释放锁 */ public class test45 { public static void main(String[] args) { //创建资源对象 sells s=new sells(); //创建线程对象 Thread t1=new Thread(s,"窗口1"); Thread t2=new Thread(s,"窗口2"); Thread t3=new Thread(s,"窗口3"); t1.start(); t2.start(); t3.start(); } } class sells implements Runnable { //定义票 private int tickets=100; //定义锁对象 private Lock lock=new ReentrantLock(); @Override public void run() { // TODO Auto-generated method stub //加锁 lock.lock(); while(tickets>0) { try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+"正在出售第"+(tickets--)+"张票"); } //释放锁 lock.unlock(); } }
    转载请注明原文地址: https://ju.6miu.com/read-20499.html

    最新回复(0)