2011-03-29 4 views
1

세 가지 방법으로 모두 on 폴더의 동일한 파일에 액세스합니다. 나는 PersistenceStrategy com.thoughtworks.xstream.persistence.XmlArrayListjava howto는 메서드 그룹을 통해 동기화합니다.

것은 많은 스레드가, 읽기, 쓰기 마녀 모든 동기화하는 네 가지 방법 중 하나를 사용하여 제거 할 수 있다는 것입니다 사용합니다. 동기화는 두 방법이 개별적으로 동기화되기 때문에 한 방법의 READ가 다른 방법의 WRITE와 충돌하는 것을 막지 못합니다.

나는 그들을 모두 클래스에 넣고 어떻게 든 클래스를 동기화한다면 생각하고 있었습니까?

아이디어가 있으십니까?

답변

4

MyClass.class 인스턴스에서 동기화하는 것은 허용되지만 대부분의 경우 외부에서 액세스 할 수있는 것이 아닌 개인용 잠금을 사용하는 것이 좋습니다. 따라서 개인 최종 (필요한 경우 정적) 인스턴스를 만들고 동기화 된 블록에서 인스턴스를 잠글 수 있습니다.

private final Object lock = new Object(); 
+0

감사합니다. – Erik

+0

이 경우의 오류는 시뮬레이션하기가 힘들어서 테스트하기가 어렵습니다. 이것이 올바른 방법이라고 생각합니다. : 개인 최종 PeLock = 새로운 PeLock(); 동기화 됨 (per) { on = per.loadUserData ("name"); } – Erik

+0

특정 유형을 사용하지 마십시오. 잠금은 private 일 뿐이므로'Object()'가 좋습니다. lock은 사용자의 필요에 따라 정적 또는 인스턴스 변수입니다. {public class MyClass {private final lock();} –

관련 문제