Java에서 중요한 영역을 어떻게 감지합니까? 두 개의 원자 프로세스를 사용하여 상호 배제를 구현하는 것이지만 이것이 중요한 영역인지 판단하기 위해 찾는 일반적인 사항은 무엇인지 이해합니다.Java에서 중요한 영역을 탐지하는 방법은 무엇입니까?
내가 아는 매우 궁금 여부 :
자바 중요한 지역의 모든 동기화 방법?
은 Java의 동시 시스템에서만 발견되는 중요한 영역입니까?
Java에서 중요한 영역을 어떻게 감지합니까? 두 개의 원자 프로세스를 사용하여 상호 배제를 구현하는 것이지만 이것이 중요한 영역인지 판단하기 위해 찾는 일반적인 사항은 무엇인지 이해합니다.Java에서 중요한 영역을 탐지하는 방법은 무엇입니까?
내가 아는 매우 궁금 여부 :
자바 중요한 지역의 모든 동기화 방법?
은 Java의 동시 시스템에서만 발견되는 중요한 영역입니까?
당신은 어떤 값이 여러 스레드간에 공유되어 있는지 확인해야합니다 유스 케이스 끊으면 값이,이 스레드를 설정하거나 얻을 수 있지만 경우 네는 "손상"것으로 간주 할 수있는 경우 인해 손상된 값 그것의 중요한 영역을 잠급니다. 동시성
은 Critical Section 단순히 가 한 스레드가 어떤 다른 또는 하나의 스레드가에 쓰려고 같은 메모리에 기록 될 때 메모리로부터 /로 판독/기록 할 수있는 코드 부분 인 다른 스레드가 같은 메모리에서 읽을 때의 메모리.
요약
Thread1이 - 쓰기 | 스레드 2 - 쓰기 | 안전성 - 아니요
스레드 1 - 쓰기 | 스레드 2 - 읽기 | 안전성 - 아니요
스레드 1 - 읽기 | 스레드 2 - 쓰기 | 안전성 - 아니요
스레드 1 - 읽기 | 스레드 2 - 읽기 | 안전성 - 예
즉, 그들은 우리가 그 위에 적절한 control을 구현하지 않는 경우는 가능한 오류/고장을 일으킬 수있는 우리의 프로그램 섹션입니다. (예 : 잠금 장치, 세마포어, 장벽 등)
그리고 Java에만 적용되는 것은 아닙니다. 스레드를 지원하는 모든 프로그래밍 언어에 적용됩니다.
+1, 나는 이것이 동시성 프로그래밍의 공식 용어라는 것을 몰랐다. https://en.wikipedia.org/wiki/Critical_section (비록 그것이 OP가 말한 것처럼 지역보다는 섹션이라 할지라도). 두 번째 질문에 대해서는 특히 Java에 대한 질문은 확실하지 않지만 "동시 시스템에서 중요한 영역은 무엇입니까?"라고 대답 할 수 있습니다. 그러나이 질문은 parrallel 프로그래밍에만 관련된 것이므로 분명히 대답은 분명합니다. – Asoub
@Asoub 예. '비판적'이라는 단어는 사용 된 문맥에 따라 다른 해석을 가질 수 있습니다. 나는 방금 동시 프로그래밍의 맥락에서 그것이 무엇을 의미하는지 언급했다. :)) 그리고 소스에 대한 thnx, 나는 내 대답에 그것을 추가했습니다. :)) –
Java 중요 영역의 모든 동기화 된 메소드는 무엇입니까?
뿐만 아니라 synchronized
방법/블록, 코드가 너무 중요 지역 (구역) 임계 영역 회로 텔레비전
여러 가지 방법을 보호 Lock API를 사용하여.
1.동기화 방법 :
public synchronized void incrementCounter(){
++counter;
}
2. 동기화 문
public int getCounter(){
synchronized(this){
return counter;
}
}
3. 잠금 API
class X {
private final ReentrantLock lock = new ReentrantLock();
// ...
public void m() {
lock.lock(); // block until condition holds
try {
// ... method body, which is critical section
} finally {
lock.unlock()
}
}
}
유용한 SE 질문 :
,454,551,921,182,914,563,210
Avoid synchronized(this) in Java?
은 중요한 영역은 자바에서 동시 시스템으로 볼 수있는 전용?
아니요. 다른 언어에서도 찾을 수 있습니다.
관련 SE 질문 :
C# version of java's synchronized keyword?이
Does PHP have the equivilant to Java 'synchronized' , or is this not required?
"단지 자바에서 동시 시스템으로 볼 수있는 중요한 지역이 있습니까?" ** ** 당신은 어떻게 ** "중요한 지역"을 정의하겠습니까? 시스템이 "동시"가 아닌 경우 - 시스템이 어떻게 그 정의를 충족시킬 수 있습니까? – Fildor
중요한 부분은 정의하는 부분입니다. 스레드 안전성 관점보다는 성능에서 중요한 임계 영역을 가질 수 있습니다. –
당신은 그들을 감지하지 못합니다. 너 * 디자인 *. 네가 묻고있는 것이 불분명하다. – EJP