gpt4 book ai didi

java - 仅加载该类一次

转载 作者:行者123 更新时间:2023-12-01 19:22:02 24 4
gpt4 key购买 nike

  1. 我正在实现一个使用第三方提供商的服务的服务类。
  2. 用户将与 Service 类交互以获取服务提供者的服务。

我的要求:
我只想加载服务类一次(或者它在内存中持续很长时间,比如 2 小时。)。
我的问题:
如何检查该服务类是否仅加载一次?
如果每次发出请求时都会加载它,那么有什么方法可以将它们保留在内存中吗?


这是我的服务类的代码

package com.example;import com.example.spi.Multiplication;import java.util.Iterator;import java.util.ServiceLoader;public class MultiplicationService implements Multiplication{    private static MultiplicationService service;    private ServiceLoader loader;    public static int no=0;    private MultiplicationService() {               loader = ServiceLoader.load(Multiplication.class);   }     public static synchronized MultiplicationService getInstance() {        if (service == null) {            service = new MultiplicationService();        }                 return service;    }     public int getMultiplication(int a,int b){        int result = 0;        try {            Iterator multiply = loader.iterator();        while (result == 0 && multiply.hasNext())            {                  Multiplication d = multiply.next();                result = d.getMultiplication(a,b);                System.out.println("Result is : "+ result);            }        } catch (Exception serviceError) {            result = 0;            serviceError.printStackTrace();        }        return result;    } }

谢谢

最佳答案

您可以实现singleton pattern 。一种选择是使用枚举:

public enum Service {
INSTANCE;

private ThirdPartyService service = new ThirdPartyService();

public ThirdPartyService getService() {
return service;
}
}

但不要过度使用该模式,因为它会使代码单元测试变得困难。

关于java - 仅加载该类一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3706885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com