2013-05-28 2 views
1

이 문제가 무엇입니까 ...?다중 스레드 정확성 - 일치하지 않는 동기화

Inconsistent synchronization of xxx.listValidRes; locked 50% of time

사람이 내가해야 할 일을 일을 알고 있나요 :

public final void setListValid(final List<ValidRes> listValidRes) { 
    this.listValidRes = listValidRes; 
} 

수중 음파 탐지기는 나를 으악?

+0

'p'가 누락되었다고 생각합니다. –

+0

모든 설정이 완료되었습니다. 미안하지만 긴 이름이었습니다. 여기 혼란스럽게 만들고 싶지는 않았습니다. – Maulzey

+4

질문에 주어진 코드에서 동기화를 볼 수 없습니다 ... 코드 안의 다른 곳에서 동기화 할 것입니다 * 여기 *가 아닌 것 같습니다 ... – Fildor

답변

11

질문에 제공된 코드에 동기화가 없습니다. 귀하의 코드에서 다른 곳의 this.listValidRes에서 동기화한다고 가정합니다. Sonar가 말한 것과 정확히 같습니다. 리소스를 동기화하면 모두 사용법을 사용하거나 전혀 처리하지 말고 다른 사람과 처리해야합니다. 하지이를 동기화하고 클라이언트가 신경이

  • 당신은 로 선택 수 있습니다

    은 기본적으로는 디자인 결정이다. 장점은 동기화가 없으면 훨씬 더 빠를 것입니다. 따라서 클래스가 단일 스레드 설정에서 사용되면 동기화를 방해하는 것이 좋습니다. 그러나 문서를 명확 다음 할, 당신 로 선택한 경우 하지 스레드 또는 은 멀티 스레드 사용하고 이상한 오류에 대한 불평 클라이언트 ...

  • 일 (또는 필요) 동기화를하는 그것은 중요한 자원의 모든 사용에 그것. 이를 달성하는 다양한 방법이 있습니다. 어쩌면 실제로 동기화 한 자원의 사용을 보여주고 싶을 수도 있습니다. 어쩌면 나 또는 다른 누군가가 당신에게 좋은 조언을 해줄 수 있습니다.

+0

예 선생님, 당신은 다림질을했습니다. – Maulzey