목차 멀티 스레드 개념 프로세스와 스레드 프로세스(process) : 운영체제에서는 실행 중인 하나의 애플리케이션을 프로세스라고 부른다. 사용자가 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는데 이것이 프로세스다. 하나의 애플리케이션은 다중 프로세스를 만들기도 한다. 멀티 태스킹(multi tasking) : 두 가지 이상의 작업을 동시에 처리하는 것을 말한다. 운영체제는 멀티 태스킹을 할 수 있도록 CPU 및 메모리 자원을 프로세스마다 적절히 할당해주고, 병렬로 실행시킨다. 예를 들어 워드로 문서 작업을 하면서 동시에 윈도우 미디어 플레이어로 음악을 들을 수 있다. 멀티 태스킹이 꼭 멀티 프로세스를 뜻하진 않는다. 한 프로세스 내에서 멀티 태스킹을 ..
목차 입출력 스트림 프로그램은 데이터를 읽고 출력하는 작업을 빈번히 수행한다. 데이터는 키보드를 통해 입력될 수도 있고, 파일 또는 네트워크로부터 입력될 수도 있다. 반대로 모니터로 출력될 수도 있고, 파일 또는 네트워크로 출력될 수도 있다. 데이터를 읽고 출력하기 위해 사용되는 입출력 API에 대해 알아보자. 자바에서 데이터는 스트림(Stream)을 통해 입출력된다. 스트림은 단일 방향으로 연속적으로 흘러가는 것을 말한다. 프로그램이 도착지면 흘러온 데이터를 입력 받아야 하므로 입력 스트림을 사용하고, 프로그램이 출발지면 데이터를 출력해야 하므로 출력 스트림을 사용한다. 입출력 스트림의 종류 바이트(Byte) 기반 스트림 : 그림, 멀티미티어 등의 바이너리 데이터를 읽고 출력할 때 사용 문자(chara..
컬렉션 프레임워크에는 LIFO(후입선출) 자료구조를 제공하는 Stack 클래스와, FIFO(선입선출) 자료구조를 제공하는 Queue 인터페이스가 있다. 후입선출(LIFO : Last In First Out)은 나중에 넣은 객체가 먼저 빠져나가는 자료구조를 말한다. 선입선출(FIFO : First In First Out)은 먼저 넣은 객체가 먼저 빠져나가는 자료구조를 말한다. Stack Stack 클래스는 LIFO 자료구조를 구현한 클래스이다. E push(E item) 주어진 객체를 스택에 넣는다. E peek() 스택의 맨 위 객체를 가져온다. 스택에서 객체를 제거하지 않는다. E pop() 스택의 맨 위 객체를 가져온다. 스택에서 객체를 제거한다. Stack stack = new Stack(); 처럼..
Map 컬렉션은 키(key)와 값(value)로 구성된 Map.Entry 객체를 저장하는 구조를 가진다. Entry는 Map 인터페이스 내부에 선언된 중첩 인터페이스이다. 키와 값은 모두 객체이고 키는 중복 저장될 수 없다. 기존에 저장된 키와 동일한 키로 값을 저장할 경우 새로운 값으로 대체된다. Map 사용법 Map 컬렉션에는 HashMap, Hashtable, LinkedHashMap, Properties, TreeMap 등이 있다. 다음은 Map 컬렉션에서 공통적으로 사용 가능한 Map 인터페이스의 메소드들이다. 객체 추가 V put(K key, V value) 주어진 키로 값을 저장한다. 새로운 키일 경우 null을 리턴하고 동일한 키가 있을 경우 값을 대체하고 이전 값을 리턴한다. 객체 검색 ..
List 컬렉션은 객체의 저장 순서를 유지하지만, Set 컬렉션은 저장 순서가 유지되지 않는다. 또한 객체를 중복 저장할 수 없고, 하나의 null만 저장 가능하다. Set 컬렉션에는 HashSet, LinkedHashSet, TreeSet 등이 있다. 다음은 Set 컬렉션에서 공통적으로 사용 가능한 Set 인터페이스의 메소드이다. 객체 추가 boolean add(E e) 주어진 객체 저장 객체 검색 boolean contains(Object o) 주어진 객체가 저장되어 있는지 조사 boolean isEmpty() 컬렉션이 비어 있는지 조사 iterator iterator() 저장된 객체를 한 번씩 가져오는 반복자 리턴 int size() 저장되어 있는 전체 객체 수 리턴 객체 삭제 void clear(..