문제

내가 사용하여 정적 ArrayList 클래스에서 정보를 저장에 대한 비 업데이트할 수 있는 데이터베이스 필드가 있습니다.내가 기획하면 초기화가 생성자를 일단(init 메소드 호출에 의해 보호 잠금에서 생성자).그 후 여러 스레드 확인하는 경우 arraylist 필드를 포함.질문에 대한 답을 찾을 수 있도 이것을 읽스에서 어떤 방법이 있을까?예를 들어를 호출하여 ArrayList.동기화됩니다.

도움이 되었습니까?

해결책

No(그리고 당신은 야해야 할 때 그것을 만드는 어느 한 당신이 그것에 static 생성자 는 암시적인 멀티 스레드 잠금 -지 않는 경우에는 위치에 수행하는,당신은 아마도 잠).가 readerwriterlockslim 의 사용할 수 있는지에 대한 액세스를 제어하면 결국 할 필요가 있 R/W 액세스 하지만입니다.

다른 팁

아니요. 동기화는 상태를 바꿀 상태의 대상에만 필요합니다.

아니, 당신이 읽는 한 당신은 그것을 가질 수 있습니다.

아니요, 그러나 a로 포장하는 것을 고려하십시오 ReadOnlyCollection 스레드 중 어느 것도 수정할 수 없는지 확인합니다.

편집 : 그러나 이렇게하려면 목록을 만들어야합니다. List<T> 대신 ArrayList.

목록의 초기 생성을 위해 정적 생성자를 사용하는 것을 고려할 수 있습니다. 이것은 유형에 대한 첫 번째 참조에서 한 번만 호출됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top