본문 바로가기

프로그래밍(TA, AA)/JVM 언어

(117)
[자바] 단일 연산 변수와 넌블로킹 동기화 Semaphore, ConcurrentLinkedQueue와 같이 java.util.concurrent 패키지에 들어있는 다수의 들어 있는 다수의 클래스는 단순하게 synchronized 구문으로 동기화를 맞춰 사용하는 것에 비교하면 속도도 빠르고 확장성도 좋습니다. 이와 같은 클래스의 성능이 좋아진 원인이라고 볼 수 있는 단일 연산 변수(atomic variable)와 대기 상태에 들어가지 않는 넌블로킹 동기화 기법을 살펴볼 예정입니다. 병렬 알고리즘과 관련한 연구 결과를 보면 대부분이 넌블로킹 알고리즘, 즉 여러 스레드가 동작하는 환경에서 데이터의 안정성을 보장하는 방법으로 락을 사용하는 대신 저수준의 하드웨어에서 제공하는 비교 후 교환(compare-and-swap) 등의 명령을 사용하는 알고리즘을..
[자바] 스레드풀 튜닝 및 Executor 고급 활용 보호되어 있는 글입니다.
[스프링] 스프링 배치 기본 개념 스프링배치 기본 구성 Job 하나의 배치 작업을 정의, 예를 들어 "API 서버의 사용로그 테이블의 데이터를 로그 분석 시스템으로 옮기는 배치" Job Instance 배치가 실제 실행되면, 각각의 실행을 Instance라고 한다. 예를 들어 Batch Job이 매주 한번씩 수행된다고 할때, 각각의 수행되는 Batch Job을 Batch Instance라고 한다. Job Execution 배치가 실행될때, 각 배치의 실행시, 실제 수행된 Execution을 정의한다. 예를들어 BatchJob이 월요일 오전에 수행되었을때, 첫번째 실패하고, 두번째 Retry에 의해 성공되었다면, 이 각각은 다른 Job Execution이 되고, 같은 작업을 시도하였기 때문에, 같은 Job Instance가 된다. Job ..
[자바] 람다(lambda)가 이끌어 갈 모던 JAVA(2) 아래 포스트는 학습용도로 네이버 개발자 센터 기술 포스팅에서 가져온 내용입니다. 원본자료는 참고링크(https://d2.naver.com/helloworld/4911107)를 따라가셔서 확인 바랍니다. 그 외에 람다 대수(lambda calculus)에 대해 참고할 만한 사이트입니다. http://nirvana-wiki.appspot.com/Lambda_calculus https://ko.wikipedia.org/wiki/%EB%9E%8C%EB%8B%A4_%EB%8C%80%EC%88%98 Java8은 느린 발전으로 고리타분한 언어라는 느낌까지 주던 Java 언어에 생기를 불어넣어 모던 Java 시대를 열었다고 평할만 합니다. 변화의 핵심은 여러 라이브러리와 다른 언어에서도 살펴본 함수 표현 객체와 람다 ..
[자바] Executor 프레임워크 작업(Task)은 논리적인 업무의 단위이며, 스레드는 특정 작업을 비동기적으로 동작시킬 수 있는 방법을 제공합니다. 순차적인 방법은 응답 속도와 전체적인 성능이 크게 떨어지는 문제점이 있고, 작업별로 스레드를 만들어내는 방법은 자원관리 측면에서 허점이 있습니다. 자바 클래스 라이브러리에서 작업을 실행하고자 할 때는 Thread보다 Executor가 훨씬 추상화가 잘되어 있으며 사용하기 좋습니다. public interface Executor { void execute(Runnable command); } Executor는 굉장히 단순한 인터페이스로 보이지만, 아주 다양한 여러 가지 종류의 작업 실행 정책을 지원하는 유연하면서도 강력한 비동기적 작업 실행 프레임워크의 근간을 이루는 인터페이스입니다. Exe..