- File의 개념을 추상화한 Class이다.
- 별도의 입출력 기능은 구현되지 않앗으며, 파일의 속성, 경로 및 이름 등을 알 수 있다.
- 입출력 Class 중 유일하게 File 입출력을 동시에 진행할 수 있는 Class이다.
- File Pointer가 존재하여 읽고 스는 위치의 이동이 가능하다.
- 다양한 자료형에 대한 메소드가 제공된다.
- RandomAccessFile Class
public class RandomAccessFileTest {
public static void main(String[] args) {
RandomAccessFile rf = new RandomAccessFile("random.txt", "rw"); // Constructor(String, String) 사용
rf.writeInt(1234);
System.out.println(rf.getFilePointer());
rf.writeDouble(3.1415);
rf.writeUTF("Hello World!");
rf.seek(0); // File Pointer를 첫번째 자리로 위치시켜주는 메소드
// 위의 메소드를 사용하지 않는 경우 EOFException이 발생한다.
// File Pointer가 마지막에 적어준 '!'다음에 위치하기 때문이다.
int i = rf.readInt();
double d = rf.readDouble();
String str = rf.readUTF();
System.out.println(i); // 1234
System.out.println(d); // 3.1415
System.out.println(str); // Hello World!
rf.close();
}
}
- Java의 입출력 스트림은 Decorator Pattern을 사용한다.
- 실제 입출력 기능을 가진 객체(Component)와 그 외 다양한 기능을 제공하는 Decorator(보조 스트림)을 사용하여 다양한 입출력 기능을 구현한다.
- 상속보다 확장성에서 유연하다.
- 지속적인 서비스의 증가와 제거가 용이하다.
- OS로부터 자원을 할당받은 작업의 단위
- Process의 상태
- Create : Process 생성
- Running : Process 실행
(CPU에 메모리 공간을 할당받아 실행하는 상태, Processor가 n개인 경우 n개의 Process를 동시에 실행할 수 있다.)
(CPU에서 말하는 Octa Core, Dual Core등 에서 말하는 Core가 Processor에 해당한다.) - Ready : Process 실행 준비
(CPU를 사용하여 실행되고 있지는 않지만 CPU의 할당을 기다리고 있는 상태, 여러 프로세스들이 존재 할 수 있다.) - Waiting(Block) : Process 대기
- Terminated : Process 종료
- Process의 상태전이
- Dispatch : ready -> running
(대기열에 가장 앞에 있던 Process가 CPU를 할당받는 상태) - Block : running -> blocked
(실행 중이던 Process가 Interrupt가 발생하여 대기중인 상태) - WakeUp : blocked -> ready
(Interrupt가 발생하여 대기 중인 상태에서 CPU가 할당되어 실행되는 상태) - Timeout : running -> ready
(특정 Process의 독점을 방지하기 위해 Clock Interrupt를 설정한다. 이 시간이 지나게 되어 CPU의 할당이 끝나고 다시 CPU의 할당을 기다리는 상태)
- Dispatch : ready -> running
- Process내에서 실행되는 흐름의 단위
