«synchronized» 태그된 질문

블록 또는 메소드에 대한 항목이 Java 'synchronized'키워드에 의해 제어되는 경우 '동기화'되었다고합니다. 이로 인해 액세스가 한 번에 단일 스레드로 제한됩니다. 동시 액세스가 발생하면 지정되지 않은 순서로 순차적으로 처리됩니다.

16
'동기화'란 무엇입니까?
synchronized키워드 의 사용법과 중요성에 대해 몇 가지 질문이 있습니다 . synchronized키워드 의 의미는 무엇입니까 ? 방법은 언제해야 synchronized합니까? 프로그래밍 방식 및 논리적 의미는 무엇입니까?


22
Java에서 동기화되지 않습니까?
Java 동기화에 대해 SO에 대한 질문이 나타날 때마다 일부 사람들은 synchronized(this)피해야 할 점을 지적하기를 간절히 원합니다. 대신, 그들은 개인 참조에 대한 잠금이 바람직하다고 주장합니다. 주어진 이유 중 일부는 다음과 같습니다. 일부 악의적 인 코드 가 잠금을 훔칠 수 있습니다 (매우 인기있는이 코드 에는 "실수로"변형 된 코드가 있음) 동일한 클래스 내의 …

4
Java에서 휘발성과 동기화의 차이점
Java volatile에서 synchronized(this)블록으로 변수를 선언 하고 항상 변수에 액세스하는 것과의 차이점이 궁금합니다 . 이 기사 http://www.javamex.com/tutorials/synchronization_volatile.shtml 에 따르면 말할 것이 많고 많은 차이점이 있지만 약간의 유사점이 있습니다. 이 정보에 특히 관심이 있습니다. ... 휘발성 변수에 대한 액세스는 절대로 차단할 가능성이 없습니다. 우리는 간단한 읽기 또는 쓰기 만 수행하므로 동기화 된 …

2
Java 8 인터페이스 메소드에서 "동기화"가 허용되지 않는 이유는 무엇입니까?
Java 8에서는 다음과 같이 쉽게 작성할 수 있습니다. interface Interface1 { default void method1() { synchronized (this) { // Something } } static void method2() { synchronized (Interface1.class) { // Something } } } 클래스에서도 사용할 수있는 전체 동기화 의미론을 얻습니다. 그러나 synchronized메소드 선언에 수정자를 사용할 수는 없습니다 . interface …

11
객체 또는 메소드의 Java 동기화 메소드 잠금?
같은 클래스에 2 개의 동기화 된 메소드가 있지만 각각 다른 변수에 액세스하는 경우 2 개의 스레드가 2 개의 메소드에 동시에 액세스 할 수 있습니까? 잠금이 객체에서 발생합니까? 아니면 동기화 된 메소드 내의 변수만큼 구체적입니까? 예: class X { private int a; private int b; public synchronized void addA(){ a++; } …

12
같은 클래스에서 두 개의 메소드를 동기화하면 동시에 실행할 수 있습니까?
같은 클래스에서 두 개의 메소드를 동기화 하면 동일한 객체 에서 동시에 실행할 수 있습니까? 예를 들면 다음과 같습니다. class A { public synchronized void methodA() { //method A } public synchronized void methodB() { // method B } } methodA()두 개의 다른 스레드에서 동일한 객체에서 두 번 실행할 수 없다는 …


3
.class 용 Java 동기화 블록
이 자바 코드는 무엇을 의미합니까? 의 모든 개체에 대한 잠금을 얻을 수 MyClass있습니까? synchronized(MyClass.class) { //is all objects of MyClass are thread-safe now ?? } 그리고 위의 코드가이 코드와 어떻게 다른지 : synchronized(this) { //is all objects of MyClass are thread-safe now ?? }

8
비 최종 필드의 동기화
최종 클래스가 아닌 필드에서 동기화 할 때마다 경고가 표시됩니다. 다음은 코드입니다. public class X { private Object o; public void setO(Object o) { this.o = o; } public void x() { synchronized (o) // synchronization on a non-final field { } } } 그래서 다음과 같은 방식으로 코딩을 변경했습니다. public …
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.