zoukankan      html  css  js  c++  java
  • 多线程的安全问题

    前提:

    1:如果线程之间不共享资源,则不存在线程安全的问题。

    2:如果线程之间共享资源,则就会存在线程安全的问题;即线程之间对共享资源访问的同步问题。

    解决方案:同步机制

    1:通过synchronized 定义同步代码块

    public void sale(){ 
          synchronized (this) { //使用同步代码块使线程间同步 
              if (ticketCount > 0) { 
                    System.out.println(Thread.currentThread().getName() + "正在出售第" + (100-ticketCount+1) + "张票");                      
                    ticketCount --; 
               } 
           } 
    }
    

    2:通过synchronized 定义同步函数

    public synchronized  void sale(){  //使用同步函数使线程间同步
              if (ticketCount > 0) { 
                    System.out.println(Thread.currentThread().getName() + "正在出售第" + (100-ticketCount+1) + "张票");                      
                    ticketCount --; 
               }  
    ​​​​​​}

    总结:

    1:多线程之间的同步代码块中必须使用相同的锁,才能保证线程间同步。

    2:同步函数中的锁指的就是函数所在的类的当前对象this。

  • 相关阅读:
    抽象工厂模式
    观察者模式
    建造者模式
    外观模式
    drf 之路由
    drf之视图
    drf--请求和响应
    def--序列化
    drf之restful规范
    Tepora使用
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13302454.html
Copyright © 2011-2022 走看看