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

    一、用于解决多线程安全问题的方式

      synchronized:隐式锁

        1)同步代码块  2)同步方法

      JDK1.5后

        3)同步锁 Lock

        注意:是一个显式锁,需要通过lock()方法上锁,必须通过unlock()方法进行释放锁。

     1 public class TestLock {
     2     public static void main(String[] args) {
     3         Ticket ticket = new Ticket();
     4         new Thread(ticket, "1号窗口").start();
     5         new Thread(ticket, "2号窗口").start();
     6         new Thread(ticket, "3号窗口").start();
     7     }
     8 }
     9 
    10 class Ticket implements Runnable{
    11     private int tick = 100;
    12     private Lock lock = new ReentrantLock();
    13     public void run() {
    14         while(true){
    15             lock.lock(); //上锁
    16             try{
    17                 if(tick > 0){
    18                     try {
    19                         Thread.sleep(200);
    20                     } catch (InterruptedException e) {
    21                     }
    22                     System.out.println(Thread.currentThread().getName() + " 完成售票,余票为:" + --tick);
    23                 }
    24             }finally{
    25                 lock.unlock(); //释放锁
    26             }
    27         }  
    28     }  
    29 }
  • 相关阅读:
    python工具类 md5
    python 线程池, 进程池
    scrapydweb 安装部署
    python 协程
    jquery
    scrapyd 设置访问密码
    pat 乙级1033 旧键盘打字(20)
    1459 迷宫游戏(51NOD)
    python之禅
    Jzzhu and Cities ----CodeForces
  • 原文地址:https://www.cnblogs.com/HuiH/p/11917408.html
Copyright © 2011-2022 走看看