- 프로세스 (process)
- 실행 중인 하나의 프로그램
- 하나의 프로그램이 다중 프로세스를 만들기도 한다.
- 멀티 태스킹 (multi tasking)
- 두 가지 이상의 작업을 동시에 처리하는 것
- 멀티 프로세스
- 독립적으로 프로그램들을 실행하고 여러가지 작업 처리
- 멀티 스레드
- 한 개의 프로그램을 실행하고 내부적으로 여러가지 작업 처리
- 멀티 프로세스(여러 개의 프로세스) 안에→ 각 프로세스 안에 멀티 스레드(여러 개의 스레드)
- 메인 스레드
- 모든 자바 프로그램은 메인 스레드가 main() 메소드를 실행하며 시작
- 실행 종료는 마지막 코드 실행되거나 return 문을 만날시에 종료
- 싱글 스레드
- 메인 스레드가 종료하면 프로세스도 종료
- 멀티 스레드
- 실행 중인 스레드가 하나라도 있다면 프로세스 미종료
- 싱글 스레드
- 스레드 생성 방법
- Runnable 인터페이스 이용
- Runnable을 매개값으로 갖는 생성자 호출
- 기본 형식
-
class R1 implements Runnable { @Override public void run() { while(true) { 실행문; } } } // 메인 R1 r1 = new R1(); Thread t = new Thread(r1); t1.start();
-
- Thread 추상 클래스 이용
- Thread 클래스 상속 후 run() 메소드 재정의하여 스레드가 실행할 코드 작성
- 기본 형식
-
class T1 extends Thread { @Override public void run() { while(true) { 실행문; } } } // 메인영역 T1 t = new T1(); t.start();
- 예시
-
class 클래스명 extends Thread { // 예시 int count = 0; @Override public void run() { // super.run(); <- 지워야 함 // 한번만 실행되기에 무한 반복문 사용 while (true) { // 예시 System.out.println("Printer: " + count++); if (count > 10) { break; } } } } // 메인 영역 Printer printer = new Printer(); printer.start();
- Runnable 인터페이스 이용
- 스레드 스케줄링
- 스레드의 개수가 코어의 수보다 많을 경우 스레드를 어떤 순서로 동시성으로 실행할지 결정하는 것
- 스케줄링에 의해 스레들은 번갈아 가면서 run() 메소드를 조금씩 실행
- 동시성과 병렬성
- 동시성
- 멀티 작업을 위해 하나의 코어에서 멀티 스레드가 번갈아가며 실행하는 성질
- 병렬성
- 멀티 작업을 위해 멀티 코어에서 개별 스레드를 동시에 실행하는 성질
- 동시성
- java.io 패키지
- 자바의 기본적인 데이터 입출력(I/O: Input/Output) API 제공
- 주요 클래스
- 파일 시스템의 파일의 정보를 얻기위한 클래스
- File
- 콘솔로부터 문자를 입출력하기 위한 클래스
- Console
- 바이트 단위 입출력을 위한 최상위 입출력 스트림 클래스
- InputStream, OutputStream
- 바이트 단위 입출력을 위한 하위 스트림 클래스
- FileInputStream, FileOutputStream
- DataInputStream, DataOutputStream
- ObjectInputStream, ObjectOutputStream
- PrintStream
- BufferedInputStream, BufferedOutputStream
- 문자 단위 입출력을 위한 최상위 입출력 스트림 클래스
- Reader, Writer
- 문자 단위 입출력을 위한 하위 스트림 클래스
- FileReader, FileWriter
- InputStreamReader, OutputStreamWriter
- PrintWriter
- BufferedReader, BufferedWriter
- 파일 시스템의 파일의 정보를 얻기위한 클래스
- 바이트 기반 스트림
- 그림, 멀티미디어, 문자 등 모든 종류의 데이터를 받고 보내는 것 가능
- 문자 기반 스트림
- 문자만 받고 보낼 수 있도록 특화
- InputStream
- 바이트 단위 입력 스트림의 최상위 클래스로 추상 클래스
- 주요 메소드
- read()
- 입력 스트림으로부터 1 바이트를 읽고 읽은 바이트를 리턴한다.
- close()
- read()
- OutputStream
- 바이트 기반 출력 스트림의 최상위 클래스로 추상 클래스
- 주요 메소드
- write()
- 출력 스트림으로 1 바이트를 보낸다.
- flush()
- 버퍼에 잔류하는 모든 바이트를 출력
- close()
- write()
- Reader
- 문자 기반 입력 스트림의 최상위 클래스로 추상 클래스
- 주요 메소드
- read()
- 입력 스트림으로부터 한개의 문자를 읽고 리턴
- close()
- read()
- Writer
- 문자 기반 출력 스트림의 최상위 클래스로 추상 클래스
- 주요 메소드
- write()
- 출력 스트림으로 매개값으로 주어진 한 문자를 보낸다.
- flush()
- 버퍼에 잔류하는 모든 문자열 출력
- close()
- write()
- File 클래스
- 파일 시스템의 파일을 표현하는 클래스
- 파일 객체 생성
- 파일 또는 디렉토리 존재 유무 확인
- 파일 및 디렉토리 생성 및 삭제 메소드
- createNewFile()
- mkdir()
- mkdirs()
- 경로상에 없는 모든 디렉토리 생성
- delete()
- FileReader, FileWriter
- 텍스트 파일로부터 데이터를 읽어들이거나, 저장할 떄 사용
- FileWriter fw = new FileWriter(”파일경로”, true); 형식
'Java' 카테고리의 다른 글
[Java] JDBC (0) | 2024.03.18 |
---|---|
[Java] Collection (0) | 2024.03.18 |
[Java] Exception (0) | 2024.03.18 |
[Java] 중첩 클래스, Wrapper 클래스, API 메소드, 자바 관련 단어들 (0) | 2024.03.18 |
[Java] Abstract, Interface (0) | 2024.03.13 |