전체 글

    NIO2

    NIO와 이름은 비슷하지만 크게 관련은 없는 NIO2가 7버전 부터 제공된다. 지금까지 파일을 다루기 위해서 제공한 io 패키지와 File 클래으세 미흡한 부분이 많았다. 그래서 이를 보완하는 내용이 많이 포함되어 있다. 파일의 속성을 다룰 수 있고, 심볼릭 링크까지 다룰 수 있는 기능 제공하고, 어떤 파일이 변경되었는지 쉽게 확인할 수 있는 WatchService 라는 클래스도 제공된다. 그리고 며가지 채널들도 추가됨. File의 변경점 기존의 단점 심볼릭 링크, 속성, 파일의 원한 등에 대한 기능이 없음 파일을 삭제하는 delete() 메소드는 실패시 아무런 예외를 발생시키지 않고, boolean 타입의 결과만 제공해줌 파일이 변경되었는지 확인하는 방법은 lastModified()라는 메소드를 제공해..

    ThreadLocal이란?

    오직 한 스레드에서만 읽을 수 있고 쓸 수 있는 변수를 생성할 수 있도록 함. javadoc에는 아래와 같이 기술되어 있다. * This class provides thread-local variables. These variables differ from * their normal counterparts in that each thread that accesses one (via its * {@code get} or {@code set} method) has its own, independently initialized * copy of the variable. {@code ThreadLocal} instances are typically private * static fields in classes ..

    자바 volatile 이란?

    volatile = 휘발성 그 변수를 휘발성 메모리에 만들어라 라는 뜻이다. 변수를 메인 메모리에 저장하겠다고 명시하는 것이다. 매번 변수의 값을 Read,Wrtie할 때마다 CPU cache에 저장된 값이 아닌 Main Memory에서 읽는 것이다 . CPU Cache보다 Main Memory 비용이 더 크기 때문에 변수 값 일치를 보장해야만 하는 경우에만 volatile을 사용하는게 좋다. Main Memory에 read, write 하는 작업의 원자성을 보장하는 경우. 원자성이 보장되는 경우에 volatile 키워드 만으로 안전하게 데이터를 교환할 수 있음. 멀티 스레드 환경에서 하나의 스레드만 read & write 하고 나머지 Thread가 read하는 상황에서 가장 최신의 값을 보장함 vola..