CountDownLatch
-
Thread의 선후 작업과 CountDownLatch 일련의 작업을 Thread로 구성했을 때 선/후 관계가 있는 경우가 왕왕 있다. 이때 하위 Thread의 작업이 완료될 때까지 main Thread가 기다려야 하는데 이때 join()이 사용된다. 아래의 경우를 살펴보자. void useJoin() throws InterruptedException { List threads = new ArrayList(); for (int i = 0; i < 5; i++) { Thread t = new SubThread(); threads.add(t); t.start(); } // t가 끝날 때까지 대기할 것!! for(Thread t: threads) { t.join(); } System.out.println("완전..
[Java]Thread의 선/후 작업과 CountDownLatchThread의 선후 작업과 CountDownLatch 일련의 작업을 Thread로 구성했을 때 선/후 관계가 있는 경우가 왕왕 있다. 이때 하위 Thread의 작업이 완료될 때까지 main Thread가 기다려야 하는데 이때 join()이 사용된다. 아래의 경우를 살펴보자. void useJoin() throws InterruptedException { List threads = new ArrayList(); for (int i = 0; i < 5; i++) { Thread t = new SubThread(); threads.add(t); t.start(); } // t가 끝날 때까지 대기할 것!! for(Thread t: threads) { t.join(); } System.out.println("완전..
2021.02.16 -
junit을 이용해서 multi thread를 테스트하면 아무래도 main thread가 빨리 종료해버리기 때문에 원하는 테스트 결과를 얻기 어렵다. 다음은 @Async를 이용해서 비동기 호출을 구현하고있는 빈의 예이다. @Component @Slf4j public class HeavyWorkBean { @Async public void heavyWork(int i) throws InterruptedException { Thread.sleep(1000); log.trace("아주 무거운 작업을 {} 번째 진행중.", i); } } 위 코드를 아무 생각 없이 테스트 하면 아래와 같다. public class AsyncTest { @Autowired HeavyWorkBean hBean; @Test publi..
junit을 이용한 multi thread 단위테스트junit을 이용해서 multi thread를 테스트하면 아무래도 main thread가 빨리 종료해버리기 때문에 원하는 테스트 결과를 얻기 어렵다. 다음은 @Async를 이용해서 비동기 호출을 구현하고있는 빈의 예이다. @Component @Slf4j public class HeavyWorkBean { @Async public void heavyWork(int i) throws InterruptedException { Thread.sleep(1000); log.trace("아주 무거운 작업을 {} 번째 진행중.", i); } } 위 코드를 아무 생각 없이 테스트 하면 아래와 같다. public class AsyncTest { @Autowired HeavyWorkBean hBean; @Test publi..
2019.07.22