더북(TheBook)

다시 본 예제로 돌아가 @Lock을 붙여 접근을 제어해볼까요(코드 4-11)?

코드 4-11 @Lock으로 동시성을 관리

package com.devchronicles.singleton;
 
import java.util.HashMap;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.ejb.ConcurrencyManagement;
import javax.ejb.ConcurrencyManagementType;
import javax.ejb.DependsOn;
import javax.ejb.EJB;
import javax.ejb.Lock;
import javax.ejb.LockType;
import javax.ejb.Singleton;
import javax.ejb.Startup;
 
@Startup
@DependsOn(“MyLoggingBean”)
@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)
@Singleton
public class CacheSingletonBean {
 
private Map<Integer, String> myCache;
 
@EJB
MyLoggingBean loggingBean;
 
@PostConstruct
public void start(){
    loggingBean.logInfo(“시작합니다!”);
    myCache = new HashMap<Integer, String>();
}
 
@Lock(LockType.WRITE)
public void addUser(Integer id, String name){
    myCache.put(id, name);
}
 
@Lock(LockType.READ)
public String getName(Integer id){
    return myCache.get(id);
}
}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.