본문 바로가기

자바9

[java] Thread 작업 완료 확인 - Future Future "Blocking 방식의 작업 완료 통보" Future 객체는 작업이 완료될 때까지 기다렸다가 최종 결과를 얻는 데 사용한다. 그래서 Future를 지연 완료(pending completion) 객체라고 한다. ExecutorService의 submit() 메소드는 파라미터로 받은 Runnable 또는 Callable 작업을 Thread Pool의 작업 큐에 저장하고 즉시 Future 객체를 리턴한다. 이후 Future의 get() 메소드를 호출하면 Thread가 그 작업을 완료할 때까지 기다렸다가(Blocking!) 작업을 완료하면 처리 결과를 리턴한다. Runnable Runnable task = new Runnable() { @override public void run() { // ... 2019. 9. 1.
javaDoc에 샘플코드(xml 등) 작성하기 javaDoc에서 샘플코드를 작성할 때 아래처럼 바로 쓰면 문서상에서 보이지 않는다. /** * Transaction 처리를 위한 DataSourceTransactionManager를 지정한다. * transactionManager bean은 아래와 같이 정의해서 사용한다. * * * * @param transactionManager */ public void setTransactionManager(DataSourceTransactionManager transactionManager) { this.transactionManager = transactionManager; } 이때 와 @code 태그를 사용하면 해결된다. 샘플코드 자체는 @code 태그만으로도 작성이 가능하지만, 완성된 문서에서는 개행이 안.. 2019. 8. 31.
[java] RejectExecutionHandler reject policy - 작업 큐(workQueue)가 full인 상태에서의 처리 정책 Thread Pool ? 병렬 작업 처리가 많아지면 Thread의 개수가 증가하고 그에 따른 Thread 생성과 스케줄링으로 인해 CPU가 바빠져서 메모리 사용량이 늘어난다. 따라서 애플리케이션의 성능이 저하된다. 이런 상황을 막기 위해 Thread Pool을 사용한다. Thread Pool은 작업 처리에 사용되는 Thread를 제한된 개수만큼 정해놓고 작업 큐에 들어오는 작업을 하나씩 Thread가 맡아서 처리한다. java.util.concurrent 패키지에 ExecutorService 인터페이스와 ExecutorService 구현 객체를 만들 수 있는 Executors 클래스를 제공해준다. ExecutorService 구현 객체는 newCachedThreadPool()나 newFixedThread.. 2019. 8. 30.
[java8] Stream 연산자 정리 Operations Stream을 이용한 코드는 계속해서 Dot 연산자로 method chaining을 일으킨다. Intermediate Operations (중간 연산자) 중간 연산자들은 모두 Stream을 반환하므로 연속적으로 사용할 수 있다. 단, Stream은 게으르므로(Lazy!) 최종 연산이 존재하지 않으면 중간 연산은 실행되지 않는다. filter Predicate에 해당하는 Stream 요소를 필터링한다. List list = new ArrayList(); list.add("item4"); list.add("item5"); list.add("item1"); list.add("item2"); list.add("item3"); list.stream().filter(s -> s.endsWith(.. 2019. 8. 30.