2017-10-18 13 views
1

동시성의 맥락에서 "작성"은 무엇을 의미합니까? 프로그래밍 언어 화용론에서

스콧

에 의해 정확성이 순서를 잠금에 의존한다는 사실은 를 구성하지 잠금 기반 프로그램 파편이 없다는 것을 의미 : 우리는 록 기반의 추상화를 기존 걸릴 안전하게 내에서 그들을 호출 할 수 없습니다 새로운 중요한 섹션.

"작성"은 무엇을 의미합니까?

잠금 기반 프로그램 조각이 작성되지 않는 이유는 무엇입니까?

Transform Java Future into a CompletableFuture

에서 자바 8 CompletableFuture, 작성 가능입니다 미래의 새로운 구현을 (thenXxx 방법의 무리 포함) 소개합니다. 이 라이브러리를 독점적으로 사용하고 싶지만 많은 라이브러리를 사용하려면 구성 할 수 없습니다. 향후 인스턴스.

향후 인스턴스가 작성 가능하고 일부 인스턴스가 아닌 것은 무엇을 의미합니까?

감사합니다.

+0

새로운 것을 만들기 위해 부품을 결합/배열하는 것을 의미합니다. – shmosel

+0

감사합니다. 그것이 코드에서 어떻게 이루어 졌는지 보여 주시겠습니까? 아니면 그러한 예를 가르쳐 주시겠습니까? – Ben

답변

1

첫 번째 부분에서는 잠금 기반 작업이 작성하는 것이 쉽지 않습니다. 최소한 데드 록을 피하려면 잠금 순서를 정의하고 어디에서나 사용해야합니다. 또한 잠시 동안 잠금을 획득해야하므로 장기 실행 작업이나 I/O 대기와 같이 차단할 수있는 코드를 잠그지 않아야합니다.

두 번째 부분에서는 Future<V> 인터페이스가 제대로 작성되지 않습니다. 완료 될 때를 알 수있는 유일한 방법은 폴링 또는 블로킹 (isDone()get())입니다. Future<V> 님의 완료에 대해 통보받을 다른 방법이 없습니다.

쉽게 구성 할 수있는 특정 선물이 있습니다 (예 : CompletableFuture<V>). 폴링 또는 차단 대신 알림을받을 수 있습니다.

그러나이 중 하나를 Future<V>으로 가져 오면 알림 메커니즘을 사용할 수 없습니다. 구성 방법이 포함 된 CompletionStage<V> 인터페이스로 전송 해 볼 수 있습니다.