본문 바로가기
[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.
[Effective Java] 지나친 동기화는 피하자 [Effective Java] 지나친 동기화는 피하자 - 지나친 동기화는 성능을 저하시키고 교착상태(dead lock)을 유발시키며, 심지어 예기치 않은 행동을 초래할 수 있다. - 동기화된 메소드나 블록 안에서 절대로 클라이언트에게 제어권을 넘기면 안 된다. 즉, 동기화된 영역 내부에서는 오버라이딩된 메소드를 호출하지 않아야 하며, 함수 객체의 형태로 클라이언트가 제공하는 메소드도 호출하지 말아야 한다. 동기화된 영역을 갖는 클래스의 관점에서 그런 메소드들은 매우 이질적인 녀석들이다. 그 메소드가 무슨 일을 하는지 알지 못하며, 이질적인 일을 하는 것을 제어하지도 못한다. 외계인 메소드가 하는 일에 따라 다르겠지만, 동기화된 영역에서 그 메소드를 호출하면 예외나 dead lock 또는 데이터 손상까지 .. 2017. 3. 9.
[Effective Java] 공유하는 가변 데이터에 접근 시 동기화하자. [Effective Java] 공유하는 가변 데이터에 접근 시 동기화하자. - 동기화를 하지 않으면, 하나의 스레드에서 변경한 내용을 다른 스레드에서 못 볼 수 있다. 동기화는 불안정 상태의 객체를 스레드가 볼 수 없도록 하는 것은 물론, 동기화된 메소드나 블록에 진입하는 각 스레드가 앞에서의 모든 변경(같은 락으로 보호되었던)이 반영된 결과를 볼 수 있게 해준다. - 자바 언어 명세에서는 long 이나 double 타입이 아닌 변수의 값을 읽거나 쓸 때는 원자성을 보장한다. long 이나 double 타입이 아닌 변수의 값을 읽으면 어떤 스레드가 그 변수에 저장했던 값을 반환 받을 수 있다는 것. 실제로 동기화하지 않고 여러 스레드가 그 변수를 동시에 수정해도 그때그때 수정된 값이 반영된다. 스레드가 .. 2017. 3. 7.
병렬 프로그램을 위한 어노테이션 병렬 프로그램을 위한 어노테이션 클래스 어노테이션 - @Immutable, @ThreadSafe, @NotThreadSafe. - @Immutable 어노테이션은 해당 클래스가 불변(immutable) 클래스임을 나타낸다. 자동적으로 @ThreadSafe 이기도 하다. - @NotThreadSafe 어노테이션은 해당 클래스가 스레드 안전성을 확보하지 못하고 있다는 의미이다. 스레드 안전성을 확보했다는 어노테이션을 달지 않은 모든 클래스는 당연하게 @NotThreadSafe 이기 때문에 꼭 사용해야만 하는 것은 아니다. 다만 한눈에 알아볼 수 있도록 하려면 @NotThreadSafe 어노테이션을 달아두는 편이 좋다. - 어노테이션은 상대적으로 방해되는 부분이 적으면서 클래스 사용자나 유지보수 담당자 모두에.. 2015. 7. 20.
[PHP] File Manipulation Tutorial PHP, File Manipulation Tutorial =====파일 열기 $fp = fopen( "$DOCUMENT_ROOT/../orders/orders.txt", "w" ); - $_SERVER['DOCUMENT_ROOT'] 는 웹 문서 트리의 루트를 가르킨다. - 경로를 나타낼 때, / 를 쓰는 것이 좋다. \ 는 윈도우즈에서는 사용할 수 있지만, Linux 에서는 \\ 로 인식시켜야 하기 때문. - file mode 는 다음과 같다.rr+ : 읽고 쓰기 위함.ww+ : 읽고 쓰기 위함.x : 경고 쓰기, 만일 파일이 있을 경우 파일을 열지 않고, fopen() 이 false 를 반환하고 PHP 는 경고x+ : 파일을 읽고 쓰기 위함.a : 추가 모드, 파일을 추가 쓰기 위해 연다.a+ : 파일.. 2013. 12. 30.
반응형