2013-11-03 2 views
0

정적 메서드를 사용하여 메서드에 대한 반환 값을 가져 오는 데 사용되는 유일한 항목이되는 정적 메서드로 생각하고있어. 내 응용 프로그램에서 여러 스레드를 사용하게됩니다. 내 질문은 :이 동기화 할 필요가/메서드에 대한 잠금을 사용하거나 변수를 사용중인 휘발성/원자 긴 등) 또는 메서드를 정적 및 내 메서드는 메서드에 입력을 사용하기 때문에 출력을 얻고 (다른 객체에 액세스하지 않음)자바 스레드 안전에 정적 메서드입니다.

+0

, 다음입니다. 그렇지 않으면 그렇지 않습니다. –

+0

이 질문은 * 닫기 투표 *의 좋은 후보입니다 :) – Sage

+0

당신은 스레드 안전성의 의미를 알아야합니다. –

답변

7

static 및 스레드 안전성은 직각 개념이므로 은 코드에 따라 다릅니다.

-1

변수/개체 static 사본이 하나만 존재합니다. 중요한 것은 귀하의 방법이 작동하는 것입니다.

static 메서드가 Vector을 수정한다고 가정하면 동기화 할 필요가 없습니다. ArrayList을 수정하는 경우 동기화가 필요합니다.
사용자 지정 클래스의 개체 인 경우 동기화가 필요합니다. static``에 의해 호출 모든 메소드는 스레드로부터 안전합니다 경우

당신은 스레드 안전에 대한 자세한 내용을 할 수 있습니다

=)

+0

'메서드가 정적이기 때문에 정적 값에서만 작동 할 수 있습니다.' –

+0

@SotiriosDelimanolis 여기서 어떤 단어가 필요합니까? =) –

+0

@LittleChild : 실제로 옳은 것을 설명하는 단어;) 정적 메서드에서 비 정적 속성을 처리하는 것은 괜찮습니다. 왜 그렇게 할 수 없습니까? 정적 무효 테스트 (MyObject someObject) {someObject.someMember = 5; }')) –

관련 문제