나는이 작은 클래스를 만들어 그것의 표준 구현을 찾을 수 있지만,이 어딘가에 이미 존재해야 나는 간단한 무언가를 생각하기 때문에 :이러한 종류의 동시성 관련 클래스를 어떻게 호출합니까? 표준 구현이 있습니까?
이class ReturnValue {
private var value = false
private val latch = new java.util.concurrent.CountDownLatch(1)
def setValue(aValue: Boolean) {
value = aValue
latch.countDown()
}
def getValue() = {
latch.await
value
}
}
그것의 목적은 두 스레드 사이의 값을 교환하는 것입니다 (내 경우에는 메인 스레드 + EDT). getValue() 메서드를 사용하는 코드에서 Future와 비슷하게 보이지만 Future 구현에서는 호출자가 코드를 제공하여 내 경우에는 작동하지 않는다고 기대합니다.
그래서 내 질문은 :
- 같은 꼬추의 이름이 있습니까?
- java 또는 scala에 대한 표준 구현이 있습니까?
- 구현이 정확합니까? 더 일방적이다 제외하고, 나에 Exchanger 같은 비트 보이는
나는 그것을 "Java가 아니다"라고 부른다 :-) –
두 개의 질문 ... * setValue *는 두 번 이상 호출되어야 하는가? * setValue *가 두 번 이상 호출되면,이 코드는 실제로 정확하게 동기화됩니까? (저는 스칼라에 대해 많이 알지 못합니다. 그러나 * getValue *가 올바른 값을 돌려 줄 수있는 방법을 보지 못했습니다. * latch.wait * 충분합니까?) – Gugussee
@Gugussee correct : setValue는 한 번만 호출됩니다. latch.await 충분하니? 나는 그렇게 생각한다. 그러나 나는 그것에 돈을 걸지 않을 것이다. –