• 何为线程安全,如何实现线程安全(线程同步)?


    一、线程安全

    线程安全指的是内存的安全,在每个进程的内存空间中都会有一块特殊的公共区域,通常称为堆(内存)。进程内的所有线程都可以访问到该区域,这就是造成问题的潜在原因。

    所以线程安全指的是,在堆内存中的数据由于可以被任何线程访问到,在没有限制的情况下存在被意外修改的风险。即堆内存空间在没有保护机制的情况下,对多线程来说是不安全的地方,因为你放进去的数据,可能被别的线程“破坏”。

    https://zhuanlan.zhihu.com/p/67905621

    二、如何实现线程安全(线程同步)?

    1.使用synchronized 关键字 同步方法

    2.使用synchronized 关键字同步代码块

    3.使用特殊域变量(volatile)实现线程同步

    4.使用重入锁实现线程同步

      如果synchronized关键字能满足用户的需求,就用synchronized,因为它能简化代码 。如果需要更高级的功能,就用ReentrantLock类,此时要注意及时释放锁,否则会出现死锁,通常在finally代码释放锁。

    5.使用局部变量ThreadLocal实现线程同步

       如果使用ThreadLocal管理变量,则每一个使用该变量的线程都获得该变量的副本,副本之间相互独立,这样每一个线程都可以随意修改自己的变量副本,而不会对其他线程产生影响。

    https://www.cnblogs.com/xiaoxi/p/7679470.html

  • 相关阅读:
    设计模式-适配器模式
    设计模式-模板方法模式
    设计模式-策略模式
    spring-消息
    spring-集成redis
    spring-mvc高级技术
    spring-AOP
    restful规范
    十一,装饰器详解
    十,函数对象,嵌套,名称空间与作用域,闭包函数
  • 原文地址:https://www.cnblogs.com/jingpeng77/p/13549127.html
Copyright © 2020-2023  润新知