zoukankan      html  css  js  c++  java
  • 线程同步

    线程同步

    同步代码块

    synchronized(监视器){

    //共同享用的代码块

    }

    多个线程在抢夺cpu执行权,在执行run()方法,遇到synchronized代码块时,会检查是否有锁对象,如果有,就继续执行下去。反则,该线程就会进入阻塞状态。直到锁对象被释放,多个线程就会继续抢夺cpu执行权。

    Object obj = new Object();//监视器

    public void run() {

               while(true){
                   synchronized (obj){
                       if(tickets>0) {
                           System.out.println(Thread.currentThread().getName() + "-->" +"正在出售第"+tickets+"票");
                           tickets--;
                      }
                  }

              }

      }

    同步方法

    1.把共同访问的数据总结抽取出来,放进一个方法里面。

    2.格式是 :修饰符 synchronized 返回值类型 方法名(参数列表){

    //共享的数据;

    }

    public void run() {

           while(true){
               sell();
          }

      }

       public synchronized  void sell(){
           synchronized (obj){
               if(tickets>0) {
                   System.out.println(Thread.currentThread().getName() + "-->" +"正在出售第"+tickets+"票");
                   tickets--;
              }
          }
      }

    使用lock锁

    步骤:

    1.在成员位置创建一个ReentrantLock对象

    2.在可能出现线程安全代码前调用:ReentrantLock的lock()方法。

    注:将可能出现线程安全代码放进try{}中

    3.在finally{}中调用unlock()

         Lock r =  new ReentrantLock();//1.在成员位置创建一个ReentrantLock对象
       @Override
       public void run() {

           while(true){
              r.lock();
              try{
                  if(tickets>0) {
                      System.out.println(Thread.currentThread().getName() + "-->" +"正在出售第"+tickets+"票");
                      tickets--;
                      }
                }
              finally {
                  r.unlock();
                  }

          }

     

  • 相关阅读:
    纯JS.CSS编写的可拖拽并左右分栏的插件(复制代码就能用)
    jquery on()方法重复绑定解决方法
    在PHP语言中使用JSON和将json还原成数组
    Flex 布局教程:语法篇
    在线生成大全(这里真的什么都有)
    css3(border-radius)边框圆角详解
    css常用鼠标指针形状代码
    input 正则限制输入内容
    html中input标签的tabindex属性
    CSS gradient渐变之webkit核心浏览器下的使用
  • 原文地址:https://www.cnblogs.com/stydejava/p/13436748.html
Copyright © 2011-2022 走看看