Class AtomicLoader<T>

java.lang.Object
org.miaixz.bus.core.lang.loader.AtomicLoader<T>
Type Parameters:
T - 被加载对象类型
All Implemented Interfaces:
Serializable, Loader<T>

public abstract class AtomicLoader<T> extends Object implements Loader<T>, Serializable
原子引用加载器 使用AtomicReference 实懒加载,过程如下
 1. 检查引用中是否有加载好的对象,有则返回
 2. 如果没有则初始化一个对象,并再次比较引用中是否有其它线程加载好的对象,无则加入,有则返回已有的
 
当对象未被创建,对象的初始化操作在多线程情况下可能会被调用多次(多次创建对象),但是总是返回同一对象
Since:
Java 17+
Author:
Kimi Liu
See Also:
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    get()
    获取一个对象,第一次调用此方法时初始化对象然后返回,之后调用此方法直接返回原对象
    protected abstract T
    初始化被加载的对象 如果对象从未被加载过,调用此方法初始化加载对象,此方法只被调用一次

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • AtomicLoader

      public AtomicLoader()
  • Method Details

    • get

      public T get()
      获取一个对象,第一次调用此方法时初始化对象然后返回,之后调用此方法直接返回原对象
      Specified by:
      get in interface Loader<T>
      Returns:
      加载完毕的对象
    • init

      protected abstract T init()
      初始化被加载的对象 如果对象从未被加载过,调用此方法初始化加载对象,此方法只被调用一次
      Returns:
      被加载的对象