zoukankan      html  css  js  c++  java
  • 解决多线程访问数据冲突的问题

    传统的方法 加Synchronized关键字,也就是所谓的加锁,只有拿到锁的线程才能操作该数据,这是所谓的让线程等待、牺牲时间的方法。

    还有一种方法也能解决这个问题,Java中有一个ThreadLocal类 该类在源码中的描述为当前线程独有的一个存储类,可以在指定线程内存储数据。通过阅读源码之后发现有一个静态内部类ThreadLocalMap。该类为当前线程维护了一个数组Table(一个线程都拥有一个map,一个map维护一个Table),当前线程只能访问到属于自己的数组Table。 通过hashCode与length位运算确定出一个索引值i,这个i就是被存储在table数组中的位置(一个线程只有一个ThreadLocalMap,一个Map只有一个Table,但是一个Table可能有许多个ThreadLocal,通过算法确定ThreadLocal的索引)。这是牺牲空间换取时间的方法。

    不和别人一样,不复制只真正理解
  • 相关阅读:
    c#结构体、打他table、excel、csv互转
    WPF 自定义图表(柱状图,曲线图)
    NemaStudio船舶模拟软件下载及破解
    点双连通分量
    HDU4612 Warm up
    边双连通分量
    [Jsoi2010]连通数
    Intern Day73
    Intern Day72
    Intern Day70
  • 原文地址:https://www.cnblogs.com/Vinlen/p/13164089.html
Copyright © 2011-2022 走看看