zoukankan      html  css  js  c++  java
  • 解决线程安全问题方式三:loke锁

     1 package day2_4;
     2 
     3 import java.util.concurrent.locks.ReentrantLock;
     4 
     5 /**
     6  * 解决线程安全问题方式三:loke锁  ---JDK5.0新增
     7  *
     8  * 1.面试题:synchronized 与 lock的异同?
     9  *   相同:两者都可以解决线程安全问题
    10  *   不同:synchronized机制在执行完相应的代码以后,自动的释放同步监视器
    11  *        lock需要手动的启动同步[lock()] ,也需要手动的结束同步[unlock()]
    12  *
    13  *
    14  * 2.优先使用顺序:Lock -> 同步代码块 -> 同比方法
    15  *
    16  * 3.如何解决线程安全问题?有几种方式
    17  *
    18  * @Author Tianhao
    19  * @create 2021-02-05-17:18
    20  */
    21 
    22 class Window7 implements Runnable {
    23     private int ticket = 100;
    24 
    25     //1.实例化ReentranLock
    26     private ReentrantLock lock = new ReentrantLock();
    27 
    28     @Override
    29     public void run() {
    30 
    31         while (ticket > 0) {
    32             try {
    33                 //2.调用锁定方法lock()
    34                 lock.lock();
    35                 if (ticket > 0) {
    36                     System.out.println(Thread.currentThread().getName() +
    37                             "卖票,票号:" + ticket);
    38                     ticket--;
    39                 }
    40             } finally {
    41                 //3.调用解锁方法 unlock()
    42                 lock.unlock();
    43             }
    44             Thread.currentThread().yield();
    45         }
    46     }
    47 }
    48 
    49 
    50 public class WindowTest7 {
    51     public static void main(String[] args) {
    52         Window7 w = new Window7();
    53         Thread t1 = new Thread(w);
    54         Thread t2 = new Thread(w);
    55         Thread t3 = new Thread(w);
    56         t1.setName("窗口1");
    57         t2.setName("窗口2");
    58         t3.setName("窗口3");
    59         t1.start();
    60         t2.start();
    61         t3.start();
    62 
    63     }
    64 }
  • 相关阅读:
    xampp 80端口被占用后这么办??解决了
    XAMPP配置基于虚拟目录、多域名的环境
    mysql 主从同步
    jquery插件
    Css绘制箭头实现代码
    Ubuntu下mount命令的好用处
    linux下IPTABLES配置详解
    java程序员网站
    1.Hibernate介绍
    1. Mybatis介绍
  • 原文地址:https://www.cnblogs.com/zui-ai-java/p/14379083.html
Copyright © 2011-2022 走看看