zoukankan      html  css  js  c++  java
  • GUC-7 同步锁 Lock

    import java.util.concurrent.locks.Lock;
    import java.util.concurrent.locks.ReentrantLock;
    
    /*
     * 一、用于解决多线程安全问题的方式:
     * 
     * synchronized:隐式锁
     * 1. 同步代码块
     * 
     * 2. 同步方法
     * 
     * jdk 1.5 后:
     * 3. 同步锁 Lock
     * 注意:是一个显示锁,需要通过 lock() 方法上锁,必须通过 unlock() 方法进行释放锁
     */
    public class TestLock {
        
        public static void main(String[] args) {
            Ticket ticket = new Ticket();
            
            new Thread(ticket, "1号窗口").start();
            new Thread(ticket, "2号窗口").start();
            new Thread(ticket, "3号窗口").start();
        }
    
    }
    
    class Ticket implements Runnable{
        
        private int tick = 100;
        
        private Lock lock = new ReentrantLock();
    
        @Override
        public void run() {
            while(true){
                
                lock.lock(); //上锁
                
                try{
                    if(tick > 0){
                        try {
                            Thread.sleep(200);
                        } catch (InterruptedException e) {
                        }
                        
                        System.out.println(Thread.currentThread().getName() + " 完成售票,余票为:" + --tick);
                    }
                }finally{
                    lock.unlock(); //释放锁
                }
            }
        }
        
    }
  • 相关阅读:
    地铁开发进度1
    人月神话阅读笔记二
    学习进度五
    人月神话阅读笔记一
    WebView的用法:
    图框联动
    阅读笔记《人月神话》一
    5
    4
    3
  • 原文地址:https://www.cnblogs.com/surge/p/10476248.html
Copyright © 2011-2022 走看看