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 @ 2023-02-02 13:35  Acaak  阅读(25)  评论(0)    收藏  举报