2014-05-18 3 views
0

두 가지 정적 메인 메소드가 포함 된 프로젝트가 있습니다. 즉, 제 목적을 위해 개별적으로 실행해야합니다. 이 두 메서드는 서로 별도로 실행해야합니다. 나는 첫번째 메소드를 실행하여 "getA"라고 부른다. getA 메소드는 모든 고유 데이터를 HashMap에 저장하고 작업을 완료합니다. 이후에는 getB 메소드를 실행할 준비가되었지만 요점은 getA 메소드를 사용하여 모든 데이터를 넣는 hashmap이 필요하다는 것입니다. 반면 getB 메소드에서이 hashmap에 도달하는 방법을 파악할 수는 없습니다. 메소드는 고유하며이 해시 맵 만 서로 관련되어 있습니다. 실제로 나는 그것들을 가능하게하기 위해 캐싱 (caching) 물건이 필요할 것이다. 두 가지 개별 방법으로 데이터 얻기

내가 예와 함께 설명하자이 getB 방법 2 시간 후, 나는 모르는 실행할 수 있다는

-------- start getA method 
-------- store data into hashmap 
-------- done 

-------- start getB method after (1/2/3 hour(s)) (the getA method must be run before this method) 
-------- obtain the data that the hashmap stores 
-------- done 

참고. 나는이 해시 맵에 언제든지 접근하고 싶다. 이 과정을 어떻게 성취 할 수 있습니까? 외부 라이브러리를 사용해야합니까? 아니면 이전에 캐싱과 같은 말을 했습니까?

어떤 조언과 접근에 감사드립니다!

+0

같은 폴더를 점유하는 두 개의 서로 다른 프로젝트가있는 것처럼 들립니다. 코드를 재구성하거나 데이터를 어딘가에 디스크에 저장해야합니다. – awksp

답변

1

, 좋은 가능성이 데이터베이스 (또는 파일) 지속 될 나중에 2시간에서 두 번째 방법을 실행하여 목표를 달성하기에 HashMap에 데이터를 저장하는 것입니다. 그런 다음 응용 프로그램을 닫더라도 모든 데이터는 일부 데이터베이스 테이블의 레코드로 저장됩니다. 그러나 영구 데이터 저장을 사용하지 않고이 방법으로 앱을 닫고 데이터를 백업하지 않으려는 경우이 HashMap을 애플리케이션 전체에서 볼 수있는 다른 방법이있을 수 있습니다 (클래스 간 가시성) 이를 수행하는 적절한 방법은 정적 인 및 공용 (또는 보호 된)으로 설정하는 것입니다. 이 방법을 피할 수있는 또 다른 방법은이 HashMap을 속성으로 사용하여 싱글 톤 디자인 패턴을 사용하는 것입니다. 당신의 요구에 따라 당신의 목표를 성취 할 수있는 많은 방법이 있습니다.

0

여기에서 성능에 문제가없고 해시 맵이 크지 않은 경우 파일로 직렬화하고 다른 응용 프로그램에서 비 직렬화 할 수 있습니다. 사실 이것은 매우 기본적인 영구 캐시입니다. 또는 두 응용 프로그램에서 사용할 수있는 세 번째 캐시 서버가 있어야합니다. 내 생각

관련 문제