본문 바로가기

13장 제네릭(Generic) (2)_멀티 타입 파라미터 제네릭 타입을 선언을 할 때 두 개 이상의 타입 파라미터를 사용해서 선언할 수 있다.class { ... }interface { ... } Product클래스를 제네릭 타입으로 선언한다면 다음과 같이 쓸 수 있다.public class Product { private T kind; private M model; public T getKind() { return kind; } public void setKind(T kind) { this.kind = kind; } public M getModel() { return model; } public void setModel(M model) { this.model = model; } } 메인클래스에서 Product클래스의 객체를 생성해서 사용한다면Product p..
13장 제네릭(Generic) 제네릭이란? -> 타입을 파라미터화해서 컴파일시 구체적인 타입이 결정되도록 하는 것-컬렉션, 람다식(함수적 인터페이스), 스트림, NIO에서 널리 사용된다. 제네릭을 사용하므로서 얻는 이점1. 컴파일시 강한 타입 체크를 할 수 있다.-컴파일시에 미리 타입을 강하게 체크해서 에러를 사전에 방지한다. 따라서 실행 시 타입에러가 나는 것을 방지해준다.*컴파일러가 미리 오류를 체크함으로서 실행 시의 버그를 줄일 수 있음2. 타입 변환을 제거할 수 있다.-타입 변환이 생기면 생길수록 전체 애플리케이션 실행 성능에는 좋지 않다. 따라서 타입변환을 적게 발생시키는 것이 좋다.-다음과 같이 제네릭을 사용하면 타입변환을 제거할 수 있다. 제네릭 사용 전 제네릭 사용 후 List list = new ArrayList();..
12장 스레드풀(4) 작업 완료순으로 통보 받기-작업 요청 순서대로 작업 처리가 완료되는 것은 아니다.-작업의 양과 스레드 스케쥴링에 따라서 먼저 요청한 작업이 나중에 완료되는 경우도 발생한다.-여러 개의 작업들이 순차적으로 처리될 필요성이 없고, 처리 결과도 순차적으로 이용할 필요가 없다면 --> 작업 처리가 완료된 것부터 결과를 얻어 이용하는 것이 좋다.-스레드 풀에서 작업 처리가 완료된 것만 통보 받는 방법-CompletionService는 처리 완료된 작업을 가져오는 poll()과 take()메소드를 제공한다.리턴타입 메소드명(매개변수) 설명 Future poll() 완료된 작업의 Future를 가져옴. 완료된 작업이 없다면 즉시 null을 리턴함 Future poll( long timeout, TimeUnit uni..