정리노트

[java] 스레드, 자바의 IO 패키지, NetworkProgramming

망고고래 2023. 11. 1. 17:40

Chapter12 스레드

6. wait(), notify()

what?

wait(): 록(lock)을 반납하고 기다리게 함

nofity(): 중단했던 스레드가 다시 록을 얻을 수 있도록 깨움

why?

스레드가 어떠한 이유로 완료되지 못할 경우 계속해서 lock을 반납하지 못할 수 있다. 이러한 상황을 제어하기 위함

how?

void wait()
void wait(long timeout)
void wait(long timeout, int nanos)
void notify()
void notifyAll()

 

 

 

 

Chapter13 입출력, 자바의 IO 패키지

1. IO와 스트림

1) IO

what?

Input, Output. 자바에서는 입출력을 처리하기 위해 IO 패키지 제공

 

2) 스트림

what?

데이터의 흐름

how?

데이터의 통신은 한쪽 방향으로만 가능→FIFO 구조

바이트기반 스트림과 문자기반 스트림으로 나뉨

 

2. 바이트기반 스트림

what?

바이트단위로 데이터를 입출력하는 스트림

how?

1byte씩 읽어서 1byte씩 출력

InputStream과 OutStream이 모든 바이트기반 스트림들의 조상

InputStream 상속→read() 추상 메서드 구현, OutputStream 상속→write() 추상메서드 구현

InputStream   OutputStream
abstract int read()
 
abstract void write(int b)
int read(byte[] b)  
void write(byte[] b)
int read(byte[] b, int off, int len)
 
void write(byte[] b, int off, int len)

 

입출력 대상에 따른 스트림

입력 스트림   출력 스트림   대상
FileInputStream  
FileOutputStream
  파일
PipedInputStream
 
PipedOutputStream
  메모리
AudioInputStream
 
AudioOutputStream
  오디오
ByteArrayInputStream
 
ByteArrayOutputStream
  프로세스

 

 

3. 바이트기반 보조 스트림

what?

스트림 보조, 성능 향상

<!--td {border: 1px solid #cccccc;}br {mso-data-placement:same-cell;}-->

입력 보조 스트림
 
출력 보조 스트림
  사용
FilterInputStream
 
FilterOutputStream
 
필터를 이용한 입출력
BufferedInputStream
 
BufferedOutputStream
 
버퍼를 통해 입출력
DataInputStream
 
DataOutputStream
 
기본형 단위로 데이터 처리
없음   PrintStream  
print, printf, println

 

how?

데이터 전송할 스트림 선언, 보조 스트림 생성자에 파라미터로 넣음

FileInputStream fis = null;
fis = new FileINputStream("파일 위치");
BufferedInputStream bis = new BufferedInputStream(fis);

 

파일을 읽어와 지정된 위치에 result.txt라는 파일로 복사한다.

 

4. 문자 기반 스트림

what?

16비트의 문자나 문자열을 읽고 쓰는 스트림

why?

바이트 기반 스트림으로는 문자 입출력 처리가 불편함

how?

Reader와 Writer 스트림이 모든 문자 기반 스트림의 조상. 상속받아 추상 메서드 구현

Reader Writer
int read() void write(int c)
int read(char[] cbuf)
void write(char[] cbuf)
abstract int read(char[] cbuf, int off, int len)
abstract void write(char[] cbuf, int off, int len)
void write(String str)
void write(String str, int off, int len)

 

FileReader fr = null;
fr = new FileReader("파일 위치");

 

 

5. 문자기반 보조 스트림

 what?

문자기반 스트림의 성능을 향상시킴

how?

입력 보조 스트림 출력 보조 스트림 사용
FilterReader FilterWriter
필터를 이용한 문자 입출력
BufferedReader BufferedWriter
버퍼를 통해 문자 입출력

 

 

6. 스트림의 예외 처리

입출력의 모든 메서드는 IOException이 발생할 가능성 있음

→예외 처리 필요

 

 

 

 

 

Chapter15 Java Network Programming

1. Network Programming

what?

다른 컴퓨터와 송수신할 수 있는 프로그램을 만드는 것

 

2. 클라이언트/서버

what?

클라이언트: 서비스를 사용하는 컴퓨터

서버: 서비스를 제공하는 컴퓨터

 

3. IP 주소

what?

컴퓨터마다 부여되는 고유한 주소

why?

장치들이 서로를 인식하고 통신하기 위함

how?

InetAddress 클래스

메서드   설명
byte[] getAddress()
 
IP주소를 byte 배열로 반환
static InetAddress[]
getAllByName(String host)
 
도메인명에 지정된 모든 호스트의 IP 주소를 배열에 담아 반환
static InetAddress
getByName(String host)
 
도메인명을 통해 IP 주소 획득
String getHostAddress()
 
호스트의 IP 주소 반환
String getHostName()
 
호스트의 이름 반환

*호스트: 컴퓨터

'정리노트' 카테고리의 다른 글

[java] 코드 해석 연습  (0) 2023.11.03
[java] Java Network Programming  (0) 2023.11.02
[java] 컬렉션 프레임워크, 스레드  (0) 2023.10.31
[java] 코드 읽기 연습  (0) 2023.10.30
[java] API③  (0) 2023.10.27