zoukankan      html  css  js  c++  java
  • 解决线程安全------lock锁

    方式三:Lock锁 --- JDK5.0新增
    *

    同步锁使用Lock对象充当

    ReentrantLock类实现了Lock

    新建的ReentrantLock对象,括号里true表示线程有着先后次序,先进先出。不写则默认为false

    package main.java.ThreadRunnable;
    
    import java.util.concurrent.locks.ReentrantLock;
    
    /**
     * @Author lx
     * @Description    lock锁
     * @Date 14:59 2020/8/4
     * @Version
     */
    
    class windows implements Runnable{
    
        private int ticket =100;
    
        private ReentrantLock lock = new ReentrantLock(true); //新建RenntrantLock
    
        @Override
        public void run() {
            while (true){
                try {
                    lock.lock();       //lock锁
                    if (ticket>0){
                        System.out.println(Thread.currentThread().getName()+":"+ticket);
                        ticket--;
                    }else
                        break;
                }finally {
                    lock.unlock();      //手动解锁
                }
    
            }
        }
    }
    
    
    public class windowRunnable {
        public static void main(String[] args) {
            windows windows = new windows();
            Thread t1 = new Thread(windows);
            Thread t2 = new Thread(windows);
            t1.setName("窗口一:");
            t2.setName("窗口二:");
            t1.start();
            t2.start();
        }
    }

    使用的优先顺序:
    * Lock ---> 同步代码块(已经进入了方法体,分配了相应资源 ) ---> 同步方法(在方法体之外)
    3.利弊
    同步的方式,解决了线程的安全问题。---好处
    操作同步代码时,只能一个线程参与,其他线程等待。相当于是一个单线程的过程,效率低。

  • 相关阅读:
    仿苹果原生头部动画
    cookie VS sessionstorge VS localstorge
    require实现单页应用程序(SPA)
    物体position:absolute后设置left:50%发生的有趣小事
    C/JS_实现选择排序
    C/JS_实现冒泡排序
    C_求质数
    C/JS_二分法查找
    JS_高程6.面向对象的程序设计(2)创建对象_3 构造函数存在的问题
    CSS_常见布局
  • 原文地址:https://www.cnblogs.com/lixia0604/p/13449024.html
Copyright © 2011-2022 走看看