본문 바로가기
Efficient Android Threading #2 스레드 통신 Efficient Android Threading #2 스레드 통신 이 글은 Efficient Android Threading 의 일부 내용만 발췌한 내용입니다.자세한 내용은 책을 구입해서 보세용. 4.1. 파이프 -파이프는 두 개의 연결된 스레드끼리만 접근할 수 있는 메모리에 할당된 버퍼다.두 개의 스레드 이외의 다른 스레드는 데이터에 접근할 수 없다.따라서 스레드 안전이 보장된다.파이프는 단방향이기 때문에 한 스레드는 쓰기만 하고 다른 하나는 읽기만 한다. 일반적으로 파이프는 두 개의 긴 실행 테스크가 있고 하나의 테스크에서 다른 테스크로 계속해서 데이터를 옮길 때 사용된다. -파이프는 바이너리 데이터와 문자 데이터 중 하나를 전송할 수 있다.PipedOutputStream(생산자)와 PipedInp.. 2018. 3. 18.
[Kotlin Tutorial] Kotlin 의 Type system #2 [Kotlin Tutorial] Kotlin 의 Type system #2 참조 : Kotlin in action 6.2. Primitive and other basic types 6.2.1. Primitive types: Int, Boolean, and more -Kotlin 은 primitive type 과 wrapper type 을 구분하지 않는다. -그렇다면 Int 가 object 라면 Kotlin 은 모든 primitive type 을 실제로 object 로 만드는가?당연히 그렇게 안 했다.compiler 가 대부분의 Int type 을 Java 의 primitive type 으로 변형시킨다.generic, collection 등은 원래 Java 의 Integer 형태만 담을 수 있으므로 이 경.. 2017. 8. 22.
[Java] Condition 은 어떻게 쓰는걸까? 예를 통해 함 보자. - Condition 에 대해 예로 잘 등장하는 코드는 아래와 같다. ( Oracle Java Doc 에 나와 있는 코드 ) /** * 이 Buffer 는 array index 재배치를 하지 않고, front 와 rear 값을 두고 control 해서 rear < front 일수도 있는 형태이다. */ public class BoundedBuffer { private final String[] buffer; private final int capacity; private int front; private int rear; private int count; private final Lock lock = new ReentrantLock(); private final Condition notFull = loc.. 2017. 5. 12.
[Java Concurrency] 동기화 클래스 구현 14.1. 상태 종속성 관리 - 병렬 객체의 상태 종속적인 메소드는 선행 조건이 만족하지 않았을 때 오류가 발생하는 문제에서 비켜날 수도 있겠지만, 비켜나는 일보다는 선행 조건을 만족할 때까지 대기하는 경우가 많아진다. - 자바에 내장된 조컨 큐 메커니즘(condition queue mechanism)은 실행 중인 스레드가 특정 객체가 원하는 상태에 진입할 때까지 대기할 수 있도록 도와주며, 원하는 상태에 도달해서 스레드가 계속해서 실행할 수 있게 되면 대기 상태에 들어가 있던 스레드를 깨워주는 역할도 담당한다. - 일단 선행 조건을 만족하지 않았다면 락을 다시 풀어줘야 다른 스레드에서 상태 변수를 변경할 수 있다. 만약 락을 풀어주지 않고 계속 잡고 있다면 다른 스레드에서 상태 변수의 값을 변경할 수 .. 2017. 5. 8.
[Java Concurrency] 객체구성 [Java Concurrency] 객체구성 4.1. 스레드 안전한 클래스 설계 - 객체가 갖고 있는 여러 가지 정보를 해당 객체 내부에 숨겨두면 전체 프로그램을 다 뒤져볼 필요 없이 객체 단위로 스레드 안전성이 확보되어 있는지 확인할 수 있다. - 클래스가 스레드 안전성을 확보하도록 설계하고자 할 때에는 다음과 같이 세 가지를 고려해야 한다. 객체의 상태를 보관하는 변수가 어떤 것인가? 객체의 상태를 보관하는 변수가 가질 수 있는 값이 어떤 종류, 어떤 범위에 해당하는가? 객체 내부의 값을 동시에 사용하고자 할 때, 그 과정을 관리할 수 있는 정책 - n 개의 변수를 갖는 객체의 상태는 n개 변수가 가질 수 있는 값의 전체 조합이다. A라는 객체 내부에 다른 객체 B를 가리키는 변수를 사용하고 있다면, .. 2017. 4. 18.
[Effective Java] wait 와 notify 대신 동시성 유틸리티를 사용하자. [Effective Java] wait 와 notify 대신 동시성 유틸리티를 사용하자. - wait 와 notify 를 사용할 이유가 거의 없다. 자바 1.5 배포판 기준으로 고수준 동시성 유틸리티를 제공한다. wait와 notify 를 올바르게 사용하기 어렵다면, 그 대신에 고수준 동시성 유틸리티를 사용해야 한다. - java.util.concurrent 패키지의 고수준 유틸리티는 세 부류로 나누어진다. 실행자 프레임워크(executor framework) 동시적 컬렉션 및 동기자(synchronizer) - 동시적 컬렉션은 List, Queue, Map 과 같은 표준 컬렉션 인터페이스를 고성능의 동시적 구현체로 제공한다. 높은 동시성을 제공하기 위해 이 구현체들은 내부적으로 자기 나름의 동기화를 한.. 2017. 3. 13.
[Network] OSI 7 Layers - Layer 2 Data LInk [Network] OSI 7 Layers - Layer 2 Data LInk 출처, 참조 : http://luuzun.blog.me/50189217223http://defoenet.com/ccna/ Layer 2. 데이터 링크 계층 : 에러 검출, 흐름 제어 ( Mac Address ) 데이터 단위는 Frame.Frame 은 3 Layer 에서 전달된 Packet 에 출발지 & 목적지의 MAC( Media Access Control ) Address 를 붙인다.목적지 MAC 주소는 주로 게이트웨이 MAC 주소이며, ARP ( Address Resolution Protocol ) 을 이용해 목적지를 확인한다. 데이터 전송 양을 제어하며, 전송과정에서 변형, 손실된 데이터는 CRC ( Cyclic Redun.. 2014. 4. 10.
[android] DB 를 update 혹은 insert 할 떄 주의해야 할 것 ( thread ) android, DB 를 update 혹은 insert 할 떄 주의해야 할 것 ( thread ) DB 에 write ( update or insert ) 를 할 때 2개의 다른 thread 에서 동시에 진행한다면 한 thread 에서는 실패한다. 하나가 끝나기를 기다리는 것이 아니라 바로 fail 한다. ( synchronized 와 같이 wait 상태가 아니다. )경우에 따라서는 Exception 을 내뱉는 것이 아니라, 그냥 log 에 기록하는 것이 전부이기도 하다. 이것은 singleton synchronize database instance 로 해결할 수 있다. 덧붙여 Provider 역시 multi thread 에서 접근할 수 있기 때문에 open provider의 경우 이에 대한 대처를 꼭 .. 2014. 3. 13.
[linux] Top 의 CPU 에 표시되는 값들의 의미는? - ni, wa, hi, si ... linux, \Top 의 CPU 에 표시되는 값들의 의미는? - ni, wa, hi, si ... nice ( ni ) 란? nice 는 프로세스의 우선순위 기본값보다 낮은 우선순위로 사용자 공간에서 실행된 시간. 참고로 us 는 반대로 기본값 혹은 그보다 높은 우선순위로 사용자 공간에서 실행된 시간 의미. I/O Wait ( wa ) 란? I/O Wait 는 I/O 를 기다리는 시간을 이야기한다. I/O 는 입,출력을 대기하며 wait 상태로 들어갈 수 있는데, 이 때 즉시 실행 가능한 다른 프로세스가 있으면 그 프로세스를 실행하지만, 그렇지 않은 경우는 I/O 대기 작업 중 하나가 완료될 때까지 대기해야 하는데 그 시간이 wa 이다. Hard interrupt( hi ) 란? hard interrup.. 2014. 2. 20.
반응형