728x90
[기본 개념] 8 | (1.5) 스레드 동기화(Synchronized, wait( ), notify( ))1 프로세스와 쓰레드2 쓰레드의 구현과 실행3 start( )와 run( )4 싱글쓰레드와 멀티쓰레드5 쓰레드의 우선순위6 쓰레드 그룹(thread group)7 데몬 쓰레드(daemon thread)8 쓰레드의 실행제어9> 쓰레드의 동기화 9.1> synchronized를 이용한 동기화 9.2> wait( )와 notify( ) 9.3 Lock과 Condition을 이용한 동기화 9.4 volatile 9.5 fork & join 프레임웍9. 쓰레드의 동기화 싱글쓰레드 프로세스의 경우 별 문제가 없지만, 멀티쓰레드 프로세스의 경우 자원을 공유해서 작업하기 때문에 한 쓰레드..
[기본 개념] 8 | (1.4) 스레드 실행제어1 프로세스와 쓰레드2 쓰레드의 구현과 실행3 start( )와 run( )4 싱글쓰레드와 멀티쓰레드5 쓰레드의 우선순위6 쓰레드 그룹(thread group)7 데몬 쓰레드(daemon thread)8> 쓰레드의 실행제어9 쓰레드의 동기화 9.1 synchronized를 이용한 동기화 9.2 wait( )와 notify( ) 9.3 Lock과 Condition을 이용한 동기화 9.4 volatile 9.5 fork & join 프레임웍8. 쓰레드의 실행제어 (2)suspend( ), resume( ), stop( ) suspend( )는 sleep( )처럼 쓰레드를 멈추게 한다. resume( )을 호출해야 다시 실행 대기상태가 ..
[기본 개념] 8 | (1.3) 스레드 실행제어1 프로세스와 쓰레드2 쓰레드의 구현과 실행3 start( )와 run( )4 싱글쓰레드와 멀티쓰레드5 쓰레드의 우선순위6 쓰레드 그룹(thread group)7 데몬 쓰레드(daemon thread)8> 쓰레드의 실행제어9 쓰레드의 동기화 9.1 synchronized를 이용한 동기화 9.2 wait( )와 notify( ) 9.3 Lock과 Condition을 이용한 동기화 9.4 volatile 9.5 fork & join 프레임웍8. 쓰레드의 실행제어 (1) 쓰레드의 상태에 대해 알아보자. 상태설명NEW쓰레드가 생성되고 아직 start( )가 호출되지 않은 상태RUNNABLE실행 중 또는 실행 가능한 상태BLOCKED동기화블..
[기본 개념] 8 | (1.2) 스레드 우선순위, 스레드 그룹, 데몬 스레드1 프로세스와 쓰레드2 쓰레드의 구현과 실행3 start( )와 run( )4 싱글쓰레드와 멀티쓰레드5> 쓰레드의 우선순위6> 쓰레드 그룹(thread group)7> 데몬 쓰레드(daemon thread)8 쓰레드의 실행제어9 쓰레드의 동기화 9.1 synchronized를 이용한 동기화 9.2 wait( )와 notify( ) 9.3 Lock과 Condition을 이용한 동기화 9.4 volatile 9.5 fork & join 프레임웍5. 쓰레드의 우선순위 쓰레드는 우선순위라는 속성(멤버변수)를 가지고 있다. 이 우선순위의 값에 따라 쓰레드가 얻는 실행시간이 달라진다. 작업의 중요도에 따라 우선순위..
[기본 개념] 8 | (1.1) 프로세스, 스레드, Start( ), Run( ), 싱글/멀티 스레드1> 프로세스와 쓰레드2> 쓰레드의 구현과 실행3> start( )와 run( )4> 싱글쓰레드와 멀티쓰레드5 쓰레드의 우선순위6 쓰레드 그룹(thread group)7 데몬 쓰레드(daemon thread)8 쓰레드의 실행제어9 쓰레드의 동기화 9.1 synchronized를 이용한 동기화 9.2 wait( )와 notify( ) 9.3 Lock과 Condition을 이용한 동기화 9.4 volatile 9.5 fork & join 프레임웍1. 프로세스와 쓰레드 프로세스란 '실행 중인 프로그램'이다. 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아 프로세스..
[기본 개념] 7 | (1.2) 와일드 카드, 지네릭 메서드, 지네릭 타입 제거1 지네릭스란?2 지네릭 클래스의 선언3 지네릭 클래스의 객체 생성과 사용4 제한된 지네릭 클래스5> 와일드 카드6> 지네릭 메서드7> 지네릭 타입의 제거5. 와일드 카드 매개변수에 과일박스를 대입하면 주스를 만들어서 반환하는 Juicer라는 클래스가 있다고 하자. 그러면 Juicer클래스는 지네릭 클래스가 아니고, static메서드는 타입 매개변수 T를 사용할 수 없으므로 'FruitBox'과 같이 특정 타입을 지정해야 한다. 이렇게 고정하면 'FruitBox'타입의 객체는 매개변수가 될 수 없으므로 다음과 같이 여러 타입의 매개변수를 갖는 makeJuice( )를 만들어야 한다. static Juice makeJuice(..
[기본 개념] 7 | (1.1) 지네릭스 클래스1> 지네릭스란?2> 지네릭 클래스의 선언3> 지네릭 클래스의 객체 생성과 사용4> 제한된 지네릭 클래스5 와일드 카드6 지네릭 메서드7 지네릭 타입의 제거1. 지네릭스란? 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능이다. 지네릭스를 사용하면 객체의 타입을 컴파일 시에 체크하여 객체의 타입 안정성을 높이고, 형변환의 번거로움이 줄어든다. 객체의 타입을 미리 명시해줌으로써 번거로운 형변환을 줄여준다는 것이다.2. 지네릭 클래스의 선언 지네릭 타입은 클래스와 메서드에 선언할 수 있는데 우선 클래스에 선언하는 지네릭 타입을 먼저 보자. class Box { Object item ; void setItem..
[기본 개념] 6 | (1.11) Collections1 컬렉션 프레임웍의 핵심 인터페이스2 ArrayList3 LinkedList4 Stack과 Queue5 Iterator, Listlterator, Enumeration6 Arrays7 Comparator와 Comparable8 HashSet9 TreeSet10 HashMap과 Hashtable11 TreeMap12 Properties13> Collections14> 컬렉션 클래스 정리 & 요약13. Collections컬렉션의 동기화 데이터의 일관성을 유지하기 위해서 공유되는 객체에 동기화가 필요하다. 구버전의 클래스들은 자체적으로 동기화가 되므로 멀티쓰레드 프로그래밍이 아니면 불필요하여 성능을 떨어뜨린다. 그래서 새로 추가된 ArrayList와 H..