목차
1. Thread
2. java.io패키지
1. Thread 제어 → ★ManageToilet / Toilet / Family 참고
• 프로세스(process): 실행 중인 하나의 애플리케이션
• 스레드(thread): 각 프로세스를 구성하는 작업 단위
1) Thread 제어: 동기화 기법
- 한 번에 하나의 쓰레드만 객체에 접근할 수 있도록 객체에 락(lock)을 걸어서 데이터의 일관성을 유지하는 것
- synchronized로 선언된 메소드는 한 번 실행이 끝나야 다음 실행이 가능
- 다른 Thread들은 한 개의 Thread가 이 메소드의 실행을 끝낼 때까지 대기
① 동기화 메소드
- 메소드에 lock을 설정
public synchronized void Method(){
임계영역 처리구문
}
② 동기화 블록
- 특정 객체에 lock 을 설정)
public void Method(){
synchronized(동기화할 객체 또는 동기화할 클래스명){
임계영역 처리구문
}
}
2. java.io 패키지
1) java.io 패키지
- 자바의 기본적인 데이터 입출력(IO: Input/Output) API 제공
2) 스트림(Stream)
- 스트림(Stream) : 데이터의 흐름
- 입력 스트림: 데이터 입력을 위한 통로
- 출력 스트림: 데이터 출력을 위한 통로
• 바이트 기반 스트림(Byte Stream) → ★InputStreamTest 참고
- 그림, 멀티미디어, 문자 등 모든 종류의 데이터를 받고 보내는 것 가능 (1 byte 단위로 입·출력 처리)
• 문자 기반 스트림(Text Stream) → ★InputStreamReaderTest 참고
- 문자만 받고 보낼 수 있도록 특화 (2 byte 단위로 입·출력 처리)
3) Byte Stream 클래스
InputStream (입력) | OutputStream (출력) |
FileInputStream / FilterInputStream / BufferedInputStream / DataInputStream / ObjectInputStream |
FileOutputStream / FilterOutputStream / BufferedOutputStream / DataOutputStream / PrintStream / ObjectOutputStream |
4) Text Stream 클래스
Reader (입력) | Writer (출력) |
BufferedReader / InputStreamReader / FileReader |
BufferedWriter / OutputStreamWriter / FileWriter / PrintWriter |
① InputStreamReader → ★InputStreamReaderTest / InputStreamReaderTest2 참고
- 2 byte 단위의 데이터를 읽을 수 있는 클래스
- 2 byte인 한글은 한글자만 읽는다. (ex. ‘가나’ 입력 → ‘가’만 입력됨)
- 배열을 이용하면 여러 글자 입력이 가능하다.
② BufferedReader 클래스 → ★BufferedReaderTest / BufferedReaderEx 참고
- 문자 길이에 구애받지 않고 입력이 가능한 클래스
- read()가 아닌 readLine() 메소드를 사용
5) 파일 입출력 클래스
① Byte Stream 클래스 → ★FileInputStreamTest / FileOutputStreamTest 참고
- 1byte 단위이기 때문에 한글 텍스트 읽기 불가
- 객체 생성시 예외처리 필요
• FileInputStream: 입력 클래스
• FileOutputStream: 출력 클래스
② Text Stream 클래스 → ★FileReaderTest / FileWriterTest 참고
- 2 byte 단위이기 때문에 한글 텍스트 읽기 가능
- 객체 생성시 예외처리 필요
• FileReader: 입력 클래스
• FileWriter: 출력 클래스
* 상대 경로: new FileInputStream( "read.txt" ); → 현재 프로젝트 디렉토리에 파일 저장
* 절대 경로: new FileInputStream( "d:/read.txt" ); → d드라이브에 파일 저장
'Java' 카테고리의 다른 글
19일차: Java java.net패키지- 2021.07.09 (0) | 2021.07.10 |
---|---|
18일차: Java java.io/java.net패키지- 2021.07.08 (0) | 2021.07.08 |
16일차: Java 예외처리/Thread- 2021.07.06 (0) | 2021.07.06 |
15일차: Java 자료구조/제네릭/예외처리 - 2021.07.05 (0) | 2021.07.05 |
14일차: Java 레퍼런스 형변환/자료구조 - 2021.07.02 (0) | 2021.07.02 |