[Kotlin] 코틀린 - 코루틴#8 - 동기화 제어 이 글은 아래 링크의 내용을 기반으로 하여 설명합니다. https://github.com/Kotlin/kotlinx.coroutines/blob/master/coroutines-guide.md 또한 예제에서 로그 print시 println과 안드로이드의 Log.e()를 혼용합니다.Shared mutable state and concurrency코루틴은 Dispathcer.Default같은 dispatcher를 이용해서 multi-thread에서 동작이 가능합니다.따라서 공유된 변경가능한 상태에 접근하는 경우 multi-thread가 접근하는 경우 문제가 발생합니다.이를 해결하기 위한 방법은 일반적으로 multi-thread에서 공유 객체에 접근할때와 같은것들도 있고, 코루틴만의 특수한 방법들이 있습니다... 개발이야기/Kotlin 6년 전
Java의 동기화 Synchronized 개념 정리#2 이번엔 singleton과 static 함수에서 synchronized가 어떻게 동작하는지 확인해 보겠습니다.Singleton 객체에서의 동기화singleton은 객체를 한개만 생성하여 사용하도록 합니다. 따라서 #1번 글에서 사용했던것과 예제나 개념은 크게 다르지 않습니다.public class Singleton { public ArrayList mList = new ArrayList(); private Singleton() { // } private static class Holder { public static final Singleton sHolderSingleton = new Singleton(); } public static Singleton getInstance() { return Holde.. 개발이야기/Java 7년 전
Java의 동기화 Synchronized 개념 정리#1 Java의 동기화 -Synchronized 키워드의 사용Java를 프로그래밍 하다면 multi-thread로 인하여 동기화를 제어해야하는 경우가 생깁니다.그래서 흔히 Synchronized 키워드를 사용하는데요그냥 multi-thread로 동시접근되는것을 막는다! 라는 개념보다는 여러 case를 살펴보면서 좀더 디테일하게 보려 합니다. Thread는 class의 멤버변수의 자원에 접근할 수 있습니다.이건 멤버변수가 Heap 메모리를 사용하기 때문에 가능한 부분인데 여하튼 여러 Thread가 공유자원에 접근하는 경우 동기화를 해 줘야 할 필요가 있습니다.사실 그밖에 동기화 해줘야 하는 이유들이야 많습니다. 추가적으로 synchronized 키워드 이외에 volatile을 사용할수 있고, Atomic 클래스.. 개발이야기/Java 7년 전