- 스레드 동기화 예제 2
Account 예제 : ATM을 통해 동기화 알아보기
동기화의 이유 : 공유된 객체를 다른 스레드로 접근할시 공유도니 데이터처리가 섞일경우 데이터의 무결성을 유지할수 없기때문에 동기화가 필요하다
동기화 처리는 호출하는쪽이나 호출당하는쪽 어느쪽에 해줘도 상관없지만 보통 호출당하는쪽에서 해주는곳 즉 처리메서드가 돌아가는곳에서 해주느것이 좋다.
스레드는 CPU를 추상화하여 만든 객체이다.
wait는 동기화처리가 되어있는곳에서만 사용한다. 다른곳에서 사용하면 예외처리가 발생한다.
wait가 정확히는 스레드함수가 아니고 Object의 메서드 이다.
wait를 받은 스레드는 notify로 큐로 가서 대기할수 있다.
- 파일 입출력
Stream API 소개
시냇물(Stream) 개념을 추상화환 Stream APIs를 제공한다.
키보드로부터 받는 입력(표준입력)
모니터로 보여주는 출력(표준출력)
- Stream API의 특징
입출력 대상에 상관없이 일관된 방법으로 데이터를 읽고, 쓸 수 있다.
스트림은 단방향이다.
스트림은 FiFO(Fist In First Out) 구조이다.
" 스트림은 연속적인 일련의 데이터(바이트) 흐름이다."
바이트스트림은 인코딩 & 디코딩이 없다
인코딩 & 디코딩이 첨부되어있는게 문자 스트림이다.
문자 스트림은 1바이트씩 읽으면안된다. 한글은 2바이트
- 입출력 방향에 따른 분류
입력(insputStream, FileinputStream등)
출력(outputStream, fileOutputStream등)
- 데이터종류에 대한 분류
바이트, 객체, 문자<-- 3가지가 있다.스트림의 종류
- 입출력 스트림의 용도에 따른 분류
노드(Node)스트림 : 단순히 입출력만 담당
필터(Filter)스트림 : 스트림의 데이터를 조작
available() 은 read 하기전에 찍으면 파일크기이지만 read가 끝난후에 찎으면 0이 된다.
read는 반드시 예외처리시에 finally에서 close를 해줘야한다.
FileInputStream, FileoutputStream 은 노드스트림
버퍼 스트림의 목적 : 임의접근
BufferedInputStream은 생성자 메게변수로 input 스트림을 따로 받아야 한다.
system.in 의 in의 속성은 BufferedInputStream이다.
표준입력은 이미 만들어져있다.
out 은 PrintStream이다.
도스콘솔에 출력하기위해 미리 만들어져(static)있다.
system,out.println은 printStream객체를 말하는거다.
- File 클래스
파일이나 디렉토리에 대한 기본정보 크기를 제공하거나 관리할 수 있다.
file.exists 실제 물리적인 경로에 대한것이다.
'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글
8월 2주차 1일 (6주) (0) | 2015.08.10 |
---|---|
8월 1주차 5일 (5주) (0) | 2015.08.07 |
8월 1주차 3일 (5주) (0) | 2015.08.05 |
8월 1주차 2일 (5주) (0) | 2015.08.04 |
8월 1주차 1일 (5주) (0) | 2015.08.03 |