본문 바로가기

자바

동기(Synchronous)/비동기(Asynchronous) 처리 다음과 같이 여러개의 작업을 동시에 처리할때 작업1,2가 메인작업과 별개의 작업일때 비동기(@Async)로 던져놓고 메인 작업만 완료 후 응답을 주기도 합니다. (응답시간 0.5초, 작업1,2의 결과 받을 수 없음) 메인작업 : 0.5초 작업1 : 1초 작업2 : 2초 하지만 3가지 작업의 결과가 모두 필요할 경우 동기 처리를 하면 3.5초가 걸리지만 작업1, 2를 비동기로 처리하면 일찍 처리가 끝난 작업은 모든 작업이 완료될때까지 대기 후 응답을 줍니다. (응답시간 2초, 3개의 작업 결과 확인 가능) Kotlin @RestController @EnableAsync class ThreadTest( val taskService: TaskService, val mainService: MainService .. 더보기
Threadlocal을 이용하여 사용자별 요청 처리하기 개발시 소스 전체에서 사용할 수 있는 전역변수처럼 데이터를 할당하고 싶을떄가 있습니다. Threadlocal을 이용하여 이를 구현해 봅니다. ShoppingController.java @RestController public class ShoppingController { private int melon; @RequestMapping("/") private String test() { this.addMelon(); return String.valueOf(melon); } private void addMelon() { melon++; } } 사용자별로 요청 시 카트에 멜론을 담는 기능을 구현하려고 합니다. 이 떄 카트 수량은 여러 메소드에서 사용할 수 있기 때문에 멤버변수로 선언을 합니다. 이렇게 작성 후.. 더보기