AQS源码浅读

  • state作用

用volatile修饰的int类型,看子类怎么实现,ReentrantLock里代表重入次数

  • VarHandle

1.普通属性的原子操作 2.比反射块,直接操纵二进制码

  • ThreadLocal的set,get方法

每个线程独有一份。

  ThreadLocalMap getMap(Thread t) {
      return t.threadLocals;
  }
  public void set(T value) {
      Thread t = Thread.currentThread();
      ThreadLocalMap map = getMap(t);
      if (map != null)
          map.set(this, value);
      else
          createMap(t, value);
  }

  public T get() {
      Thread t = Thread.currentThread();
      ThreadLocalMap map = getMap(t);
      if (map != null) {
          ThreadLocalMap.Entry e = map.getEntry(this);
          if (e != null) {
              @SuppressWarnings("unchecked")
              T result = (T)e.value;
              return result;
          }
      }
      return setInitialValue();
  }

  • java的四种引用

强:普通的引用,永远不会回收
软:内存不够用时回收
弱(ThreadLocal):只要垃圾回收就会被干掉,一般用在容器,强引用消失就不用管了,WeakHashMap
虚:给写JVM的人用的,管理堆外内存,虚引用被回收会放到一个队列

posted @   Acaak  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示