Class InstanceFactory

java.lang.Object
org.miaixz.bus.core.instance.InstanceFactory
All Implemented Interfaces:
Instance

public final class InstanceFactory extends Object implements Instance
实例化工厂类
Since:
Java 17+
Author:
Kimi Liu
  • Method Summary

    Modifier and Type
    Method
    Description
    获取单例对象
    <T> T
    multiple(Class<T> clazz)
    多例对象,每次都是全新的创建
    static <T> T
    singletion(Class<T> clazz)
    静态方法单例
    static <T> T
    singletion(Class<T> clazz, String groupName)
    静态方法单例
    <T> T
    singleton(Class<T> clazz)
    获取对象的单例对象 1.
    <T> T
    singleton(Class<T> clazz, String groupName)
    获取对象的单例对象 1.
    <T> T
    threadLocal(Class<T> clazz)
    获取每个线程内唯一的实例化对象 注意:可能会内存泄漏的场景 (1) 只要这个线程对象被gc回收,就不会出现内存泄露,但在threadLocal设为null和线程结束这段时间不会被回收的,就发生了我们认为的内存泄露 最要命的是线程对象不被回收的情况,这就发生了真正意义上的内存泄露 比如使用线程池的时候,线程结束是不会销毁的,会再次使用的 就可能出现内存泄露 参考资料:https://www.cnblogs.com/onlywujun/p/3524675.html
    <T> T
    threadSafe(Class<T> clazz)
    线程安全对象 1.

    Methods inherited from class java.lang.Object

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

    • getInstance

      public static InstanceFactory getInstance()
      获取单例对象
      Returns:
      实例化对象
    • singletion

      public static <T> T singletion(Class<T> clazz)
      静态方法单例
      Type Parameters:
      T - 泛型
      Parameters:
      clazz - 类信息
      Returns:
      结果
    • singletion

      public static <T> T singletion(Class<T> clazz, String groupName)
      静态方法单例
      Type Parameters:
      T - 泛型
      Parameters:
      clazz - 类信息
      groupName - 分组名称
      Returns:
      结果
    • singleton

      public <T> T singleton(Class<T> clazz, String groupName)
      Description copied from interface: Instance
      获取对象的单例对象 1. 需要保证对象的线程安全性 2. 只有在同一个分组返回的对象才会是单例,否则返回 newInstance()
      Specified by:
      singleton in interface Instance
      Type Parameters:
      T - 泛型
      Parameters:
      clazz - class 类型
      groupName - 分组名称
      Returns:
      实例化对象
    • singleton

      public <T> T singleton(Class<T> clazz)
      Description copied from interface: Instance
      获取对象的单例对象 1. 需要保证对象的线程安全性
      Specified by:
      singleton in interface Instance
      Type Parameters:
      T - 泛型
      Parameters:
      clazz - class 类型
      Returns:
      实例化对象
    • threadLocal

      public <T> T threadLocal(Class<T> clazz)
      Description copied from interface: Instance
      获取每个线程内唯一的实例化对象 注意:可能会内存泄漏的场景 (1) 只要这个线程对象被gc回收,就不会出现内存泄露,但在threadLocal设为null和线程结束这段时间不会被回收的,就发生了我们认为的内存泄露 最要命的是线程对象不被回收的情况,这就发生了真正意义上的内存泄露 比如使用线程池的时候,线程结束是不会销毁的,会再次使用的 就可能出现内存泄露 参考资料:https://www.cnblogs.com/onlywujun/p/3524675.html
      Specified by:
      threadLocal in interface Instance
      Type Parameters:
      T - 泛型
      Parameters:
      clazz - class 类型
      Returns:
      实例化对象
      See Also:
    • multiple

      public <T> T multiple(Class<T> clazz)
      Description copied from interface: Instance
      多例对象,每次都是全新的创建
      Specified by:
      multiple in interface Instance
      Type Parameters:
      T - 泛型
      Parameters:
      clazz - class 类型
      Returns:
      实例化对象
    • threadSafe

      public <T> T threadSafe(Class<T> clazz)
      Description copied from interface: Instance
      线程安全对象 1. 判断当前类是否拥有 ThreadSafe 注解, 如果有,则直接创建单例对象 如果不是,则创建多例对象
      Specified by:
      threadSafe in interface Instance
      Type Parameters:
      T - 泛型
      Parameters:
      clazz - class 类型
      Returns:
      实例化对象