(Java 동기화 문제) 내 제목으로 동기화 된 블록에서 정적 변수에 액세스 할 수 있습니까? 불일치가 발생합니까? 누구나 내게 단점이나 정적 변수 동기화 블록에 액세스하는 장점의 세부 사항을 말할 수 있습니까?동기화 된 블록에서 정적 변수에 액세스
답변
동기화 된 블록에서 정적 변수에 액세스 할 수 있습니까?
예, 가능합니다.
불일치가 발생합니까?
정적은 JVM의 해당 클래스의 모든 인스턴스에서 공유됩니다. 공유 리소스는 스레드 안전하지 않음 .Hence 정적 변수는 스레드 안전하지 않습니다. 따라서 여러 스레드가 정적 변수에 액세스하려고하면 불일치가 발생할 수 있습니다.
정적 변수에 대한 액세스를 동기화하는 방법을 알고 있습니다.
정적 객체에서 동기화.
public class SomeClass{ private static int sum = 0; private static final Object locker = new Object(); public void increaseSum() { synchronized (locker) { sum++; } } }
동기화 된 정적 방법. 클래스 오브젝트에
public class SomeClass { private static int sum = 0; public static synchronized void increaseSum() { sum++; } }
동기화는
public class SomeClass { private static int sum= 0; public void increaseSum() { synchronized (SomeClass .class) { sum++; } } }
정적 변수가 동일한 응용 프로그램의 다른 클래스에서 사용되는 공용 변수 인 경우 어떻게됩니까? 불일치가 있습니까? –
물론 공통 변수를 수정/읽으려는 다른 클래스의 코드를 동시에 실행하는 스레드가 여러 개있는 경우 불일치가 발생할 가능성이 있습니다. – NINCOMPOOP
위의 방법 중 하나를 사용하여 스레드 안전을 유지할 수 있습니까? –
- 1. 동기화 된 블록에서 메서드 호출
- 2. 동기화 된 블록에서 스레드 멈춤
- 3. 스프링 부트가 정적 클래스에 동기화 된 액세스
- 4. SQL 서버에서 정적 변수에 대한 액세스 동기화 SQLCLR
- 5. 동기화 및 정적 동기화
- 6. js 블록에서 django 템플릿 변수에 액세스
- 7. .each 블록에서 개체의 매개 변수에 액세스 하시겠습니까?
- 8. 동기화 된 블록에서 잠금 개체가 변경되면 어떻게됩니까
- 9. 휘발성 배열의 필요성 동기화 된 블록에서 쓰기
- 10. 자바 - 동기화 블록에서 바이트 []
- 11. 정적 함수에서 정적 변수에 액세스 C++
- 12. Arduino : 클래스의 정적 메서드에서 정적 변수에 액세스
- 13. $ var :: $ reference로 정적 변수에 액세스
- 14. 클래스 개체에서 정적 변수에 액세스
- 15. 다른 클래스의 정적 변수에 액세스
- 16. C++에서 정적 변수에 액세스
- 17. 클래스 내에서 정적 변수에 액세스
- 18. 다른 파일에서 정적 변수에 액세스
- 19. aspx 페이지의 정적 변수에 액세스
- 20. 동기화 된 블록은 정적 동기화 방법과 동일합니까?
- 21. 동기화 된 데이터베이스 액세스
- 22. 동기화 된 결과 (정적 변수)
- 23. 클래스의 정적 블록에서 안드로이드 getSharedPreferences
- 24. robotframework로 정적 클래스 변수에 액세스 하시겠습니까?
- 25. akka를 사용하는 코드 블록에서 동기화
- 26. 클래스 외부 공용 정적 변수에 액세스
- 27. 서브 클래스 메소드를 통해 정적 변수에 액세스
- 28. 동기화 액세스
- 29. 정적 메서드는 비 정적 인스턴스 변수에 액세스 할 수 있습니까?
- 30. 정적지도 객체의 동기화 된 액세스
난 동기화 블록에서 정적 변수에 액세스 할 수 *? * .. 그보십시오. * 모순이 생길까요? * 왜 그렇게 생각하니? –
정적 변수가있는 경우 해당 변수를 보유하는 객체의 정적 메소드를 통해 동기화를 수행하거나 해당 변수를 보유하는 객체의 클래스에서 동기화 된 동기화 된 블록을 사용하여 동기화를 실현해야합니다. – Mike