티스토리 뷰

728x90
반응형

우리가 프로젝트를 진행을 하다보면 lock을 이용해서 동시성 제어를 해야 할 경우가 있다.

동시성 제어에는 db를 이용한 하드락이 있을 것이고 또는 hazlecast를 이용하여 처리하는 방법도 있다.

 

오늘은 간단하게 자바에서 제공하는 lock기능에 대해서 설명하고자 한다.

import 내용

import java.util.concurrent.locks.Lock;

사용 방법:
//lock 10초간 기다림
if(lock.tryLock(10, TimeUnit.SECONDS)) {
    try {
         //데이터 처리...
        }catch (Exception e) {
                  // 예외
        }finally {
           lock.unlock();
        }
}else {
    System.out.println("## lock time out");
}

 

 
lock.tryLock은 해당 메소드를 이용하는 접근자가 10초후에 접근할 수 있도록 하는 내용이다.
자바에서 제공하는 lock은 사용도에 있어서는 가볍게 사용될 때 이용하면 좋은 코드이다.
왜냐하면 java lock은 감싸고 있는 처리부분에 대해서만 적용이 된다. 매우 일차원 적인 lock 개념이 된다.
ex) 신청자 수가 제한 되어있으면서 신청은 한곳에서만 받는 경우
만약 하나의 정보를 여러 곳에 동시에 이용이 가능 하다면 적합하지 않는 코드이다.
예를 들어
  • 은행같이 돈의 유동성이 중요한 경우
  • 영화 티켓  갯수가 정해져있으면서 여러 곳에서 접근이 가능한 경우 
  • 신청자 수 제한을 주는 데 여러 곳에서 접근하여 신청이 가능한 경우
이런 경우에는 하드락 db lock을 이용하는 경우가 많다.

 

하드락 db lock 관련 궁금하다면 아래를 확인해보세요

https://ghgo195.tistory.com/20

728x90
반응형
250x250
반응형
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함