728x90
Thread와 Runnable
Thread는 하나의 프로세스 안에서 여러 개 생성되고 고객이 필요에 따라 이 Thread를 사용하고 작업이 끝날 경우 반납한다고 생각하면 되겠다.
- Runnable : Thread의 인터페이스
- Thread Class: Runnable의 구현체
Thread의 실행 방법
- run() 메소드로 구현이 가능하며
- start()로 실행이 가능하다.
Thread에 주요 메소드
- Thread.sleep(1/1000초) : 쓰레드를 잠재운다.
- Thread.join() : 쓰레드가 끝날 때까지 기다린다.
- Thread.interrupt() : 쓰레드를 정지 시키고자 할 때 사용하는 메소드로서, 쓰레드가 일시 정지 상태일 경우 에러를 발생시켜 run() 메소드를 정상 종료 시킨다.
Thread Demon 이란?
- Demon 쓰레드가 계속 실행되고 있어도, 다른 실행중인 일반 쓰레드가 없다면 멈춰버린다.
- 위 메소드가 존재하는 이유는 예를 들어 별도로 모니터링을 하고 있다가, 주요 쓰레드가 종료될 경우 해당 모니터링도 함께 종료될 때 사용한다
Syncronized(동기화)
- Thread safe
- 한 가지의 메소드를 실행함에 있어 Thread 끼리의 간섭이 없도록 한 Thread가 해당 메소드를 사용중이면 대기중이게 만들어 해당 연산이 간섭 없이 올바로 이뤄지도록 하는 방법
Object의 notify(), wait()
주의사항 : synchronized( ) { } 로 감싸야지 사용이 가능하다
- wait() : notify가 실행되기 전까지 쓰레드를 잠재운다
- notify() : wait()되어 있는 Thread를 다시 깨워 일하게 만든다.
I/O ( Input Output )
파일을 읽거나 저장 할 경우, 다른 서버나 디바이스로 파일을 보낼 일이 있을 때 사용한다.
Byte 데이터 처리방법
- InputStream : 읽기
- OuputStream : 쓰기
Char 데이터 처리방법
- Reader : 읽기
- Writer : 쓰기
File Class
파일 및 경로 정보를 통제하기 위한 클래스
- 존재하는가?
- 파일인가, 경로인가?
- 읽거나, 쓰거나, 실행할 수 있는가?
- 언제 수정되었는가?
- 이름을 바꾸고, 삭제하고, 생성하고, 전체 경로를 확인한다
InputStream, OutputStream ,BufferedReader, BufferedWriter
입력과 출력 자바 스트림으로서 사용할 때 주의사항으로 close()를 반드시 구현해야 한다.
Serializable
Serializable 인터페이스를 구현할 경우 JVM에서 해당 객체를 저장하거나 다른 서버로 전송할 수 있도록 한다.
주의사항
- static final long serialVersionUID = 1L; 를 반드시 구현해야 한다. 없다면 default로 지정된다.
- serialVersionUID란?
- 해당 객체의 버전을 명시하는데 사용한다.
- 전송할 서버와 전송 받을 서버가 같은 객체, 클래스인지 인식하는데 사용한다.
- UID가 같더라도 변수의 개수나 타입이 다르면 다른 클래스로 인식한다.
구현방법?
- 파일 쓰기
- FileOutputStream, ObjectOutputStream
- 파일 읽기
- FileInputStream, ObjectInputStream
Transient 예약어
Serializable을 이용해 객체를 저장할 때 변수가 저장되거나 전송된다면 보안상 큰 문제가 발생할 여지가 있을 경우, 해당 예약어가 추가하면 Serializable 대상에서 제외된다.
NIO
JDK 1.4부터 추가되었는데, 속도 때문이다.
NIO는 스트림을 사용하지 않고 다음 2가지를 사용한다.
- 채널(Channel) : 예를들어 도매상을 생각하면 되겠고
- 버퍼(Buffer) : 예를들어 도매상과 고객의 중간에서 물건을 파는 소매상을 생각하면 된다.
- 메소드
- capacity() : 버퍼에 담을 수 있는 크기 리턴
- limit() : 버퍼에서 읽거나 쓸 수 없는 첫 위치 리턴
- position() : 현재 버퍼의 위치 리턴
- flip() : limit 값을 현재 position으로 지정한 후, position을 0(가장 앞)으로 이동
- 위치 변경 메소드
- get() : 순서대로 값을 가져온다.
- mark() : 현재 position을 mark한다
- reset() : mark한 위치로 reset한다
- rewind() : 현재 버퍼의 position을 0으로 이동
- clear() : 버퍼를 지우고 현재 position을 0으로 이동하고, limit 값을 버퍼의 크기로 변경
- 메소드
728x90
'Programming > Backend' 카테고리의 다른 글
API 명세서 뜯어보기 - String Class (0) | 2021.09.27 |
---|---|
자바 기초 다지기 -7 (네트워크, Java7, Java8) (0) | 2021.09.26 |
자바 기초 다지기 - 5 ( Generic, Collection, Map ) (0) | 2021.09.06 |
자바 기초 다지기 - 4 (내부 클래스, 어노테이션, 자바) (0) | 2021.08.29 |
자바 기초 다지기 - 3 (API, Object, 추상, final, Enum, 예외, String) (0) | 2021.08.23 |