>  기사  >  Java  >  HashMap을 사용하여 Java 싱글톤 모드에서 데이터를 캐시하는 방법

HashMap을 사용하여 Java 싱글톤 모드에서 데이터를 캐시하는 방법

WBOY
WBOY앞으로
2023-05-13 09:43:141041검색

1. 싱글턴 패턴이란 무엇인가요?

싱글턴 패턴은 객체의 특정 인스턴스를 생성하는 데 사용되는 객체 생성 패턴입니다. 시스템에서 클래스의 인스턴스가 하나만 생성되도록 할 수 있습니다. Java로 구현된 싱글톤은 가상 머신의 범위 내에 있으므로 클래스를 로드하는 기능은 가상 머신에 속하므로 가상 머신은 자체 ClassLoad를 통해 싱글톤 클래스를 로드할 때 클래스의 인스턴스를 생성합니다. Java 언어에서 이러한 동작은 다음과 같은 두 가지 주요 이점을 가져올 수 있습니다.

1. 자주 사용되는 객체의 경우 객체 생성에 소요되는 시간을 생략할 수 있으며, 이는 중량이 큰 객체에 대한 상당한 합계입니다. 새로운 작업 수가 줄어들고 시스템 메모리 사용 빈도도 줄어들어 GC 부담이 줄어들고 GC 일시 중지 시간이 단축됩니다.

따라서 시스템의 주요 구성요소와 자주 사용되는 객체에 대해서는 싱글톤 패턴을 사용하면 시스템 성능을 효과적으로 향상시킬 수 있습니다. 싱글톤 패턴의 핵심은 인터페이스를 통해 고유한 객체 인스턴스를 반환하는 것입니다. 첫 번째 문제는 인스턴스 생성 권한을 되찾고 클래스 자체가 자신의 클래스의 인스턴스 생성을 담당하게 한 다음 이 클래스가 이 클래스의 인스턴스에 액세스하기 위한 외부 메서드를 제공하도록 하는 것입니다

2. 싱글톤 모드 결합 HashMap 구현 캐싱

1. 테스트 결과

HashMap을 사용하여 Java 싱글톤 모드에서 데이터를 캐시하는 방법

2 코드는 다음과 같습니다

Cache 도구 클래스

public class People {

    private String name;

    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "People{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

테스트 클래스

import java.util.HashMap;
import java.util.Map;

public class CacheSingletonUtil {

    private static volatile CacheSingletonUtil cacheSingletonUtil;
    private static Map<String,Object> cacheSingletonMap;

    public static final String PEOPLE_LIST_KEY = "peopleList";

    private CacheSingletonUtil(){
        cacheSingletonMap = new HashMap<String, Object>();
    }

    /*
     * 单例模式有两种类型
     * 懒汉式:在真正需要使用对象时才去创建该单例类对象
     * 饿汉式:在类加载时已经创建好该单例对象,等待被程序使用
     */

    // 懒汉式单例模式
    public static CacheSingletonUtil getInstance(){
        if (cacheSingletonUtil == null){// 线程A和线程B同时看到cacheSingletonUtil = null,如果不为null,则直接返回cacheSingletonUtil
            synchronized (CacheSingletonUtil.class) {// 线程A或线程B获得该锁进行初始化
                if (cacheSingletonUtil == null) {// 其中一个线程进入该分支,另外一个线程则不会进入该分支
                    cacheSingletonUtil = new CacheSingletonUtil();
                }
            }
        }
        return cacheSingletonUtil;
    }

    /**
     * 添加到内存
     */
    public void addCacheData(String key,Object obj){
        cacheSingletonMap.put(key,obj);
    }

    /**
     * 从内存中取出
     */
    public Object getCacheData(String key){
        return cacheSingletonMap.get(key);
    }

    /**
     * 从内存中清除
     */
    public void removeCacheData(String key){
        cacheSingletonMap.remove(key);
    }

}

위 내용은 HashMap을 사용하여 Java 싱글톤 모드에서 데이터를 캐시하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제