Kotlin에 동시성 키워드가없는 이유는 무엇입니까?
동기화 / 동시성에 대한 키워드가없는 이유는 무엇입니까?
지금까지 내 연구는 한 가지 해결책을 제공합니다. 몇 가지 높은 수준의 클래스를 래핑하고이를 사용하여 동시성을 처리합니다.
순수 Kotlin 프로젝트에서 동시성 등을 처리하는 고도로 최적화 된 작은 구성 요소가 필요한 경우 어떻게해야합니까?
내 인상은 Kotlin이 코드의 90 %를 Kotlin으로 작성하지만 Kotlin으로 표현할 수없는 Java 코드를 포함하는 Java 용 지원 언어라는 것입니다.
이게 옳은 거니? 이것이 의도 된 방식입니까?
코 루틴이 포함 된 Kotlin 1.1이 출시되었으며 함께 제공됩니다 async..await
! 더 그것에 대해 읽기 코 틀린 참조 문서 , Kotlinx 코 루틴 라이브러리 및 깊이에있는이 위대한 예에 의해 Couroutines
Kotlin 코 루틴 외부에는 다음과 같은 옵션이 있습니다.
- Kovenant 라이브러리는 코 틀린에 약속 추가
- 퀘이사 라이브러리는 경량 스레드와 연속성을 제공
@Synchronized
그리고@Volatile
자바에서 동일한 키워드에 직접 매핑 주석synchronized
Kotlin에서 인라인 함수에서 오는 블록synchronized()
.- Kotlin에는 새로운 기능 이 포함 된
Kotlin.concurrent
패키지 및 확장 프로그램 과 JDK 클래스 확장이 있습니다. - 당신은 아무것도에 액세스 할 수 있습니다
java.util.concurrent
패키지 등ConcurrentHashMap
,CountdownLatch
,CyclicBarrier
,Semaphore
, ... - 당신은 아무것도에 액세스 할 수 있습니다
java.util.concurrent.locks
패키지 및 코 틀린는이 이들의 몇 가지에 대한 확장 시원한 포함하여withLock()
확장 기능 및 유사read
/write
확장 에 대한을ReentrantReadWriteLock
. - 당신은 아무것도에 액세스 할 수 있습니다
java.util.concurrent.atomic
패키지 등AtomicReference
,AtomicLong
... - 당신이 사용할 수
wait
및notify
개체에 대한
당신은 자바가 가진 모든 것을 가지고 있습니다. 위의 목록에서 "동기화 및 잠금" 이라는 문구를 충족하면 언어 변경없이 훨씬 더 많이 사용할 수 있습니다. 모든 언어 기능은 조금 더 예쁘게 만듭니다.
따라서 작은 Kotlin 런타임, JDK의 JVM 런타임 및 사용하려는 기타 JVM 라이브러리를 사용하여 100 % Kotlin 코드를 가질 수 있습니다. Java 코드가 필요 없으며 Java (as-in JVM) 라이브러리 만 있으면됩니다.
몇 가지 기능에 대한 간단한 샘플 :
class SomethingSyncd {
@Synchronized fun syncFoo() {
}
val myLock = Any()
fun foo() {
synchronized(myLock) {
// ... code
}
}
@Volatile var thing = mapOf(...)
}
참고 URL : https://stackoverflow.com/questions/35520583/why-there-are-no-concurrency-keywords-in-kotlin
'IT TIP' 카테고리의 다른 글
Laravel 5에서 예외 / 누락 된 페이지를 어떻게 잡나요? (0) | 2020.12.07 |
---|---|
클래스의 함수 (메소드) 가져 오기 (0) | 2020.12.07 |
ASP.NET 컨트롤에 해당하는 HTML 태그 (0) | 2020.12.07 |
치명적인 오류 : 정의되지 않은 함수 mb_strlen () 호출 (0) | 2020.12.07 |
NodeJS는 정말 단일 스레드입니까? (0) | 2020.12.07 |