zoukankan      html  css  js  c++  java
  • 解决线程安全问题第三种——Lock锁

    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();
                    }
                }
            }
       }
    }
     
  • 相关阅读:
    jQuery---三组基本动画 show hide
    jQuery---表格全选案例
    jQuery---prop方法和表格全选案例
    jQuery---美女相册案例
    jQuery---属性操作
    jQuery---tab栏切换
    jQuery---Class操作
    jQuery---CSS操作
    jQuery---第一部分复习
    DirBuste 使用
  • 原文地址:https://www.cnblogs.com/cy2268540857/p/13735607.html
Copyright © 2011-2022 走看看