병렬처리 (3) 썸네일형 리스트형 스레드 소개 순차(Sequential) - 복수의 업무를 순차적으로 실행병렬(parallel) - 복수의 업무를 동시에 처리병행(concurrnt) - 한 개의 업무를 어떠한 순서로 처리하든 상관 없이 여러개로 분할하는 모습 데이터 레이스(data race) or 레이스 컨디션(race condition) - 쓰레드 A와 쓰레드 B가 경쟁 함으로써 예기치 않게 발생하는 상황베타제어 or 상호베타(mutual exclusion) - 하나의 쓰레드가 어느 부분을 실행하고 있으면 다른 쓰레드가 그 부분을 실행할 수 없게 만듬 Synchronized - 자바에서 베타제어를 가능하게 해주는 키워드 wait 셋 - 쓰레드 대합실wait 셋 - 정지하고 있는 쓰레드들의 집합 notify, notifyAll, interrupt, .. 락 락 public class UnsafeCachingFactorizer implements Servlet{ private final AtomicReference lastNumber = new AtomicReference(); private final AtomicReference lastFactors = new AtomicReference(); @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception { BigInteger i = extractFromRequest(servletRequest); if (i.equals(lastNumber.get())) { encodeIn.. 스레드 안전성 java 동기화 기본 수단 - 자바에서 동기화를 위한 기본 수단은 syncronized 키워드로서 베타적인 락을 통해 보호 기능을 제공 함. - volatile 변수, 명시적 락, 단일 연산 변수 (atomic variable)을 사용하는 경우에도 동기화 용어를 사용함. 여러 스레드가 변경할 수 있는 하나의 상태 변수를 적절한 동기화 없이 접근하면 그 프로그램은 잘못된 것. 프로그램을 고치는 3가지 방법 - 해당 상태 변수를 스레드 간에 공유하지 않거나 - 해당 상태 변수를 변경할 수 없도록 만들거나 - 해당 상태 변수에 접근할 땐 언제나 동기화를 사용 상태 없는 서블릿 - 서블릿 기반 인수분해 서비스를 만들고 스레드 안정성을 유지하면서 하나하나 기능 추가@ThreadSafe public class St.. 이전 1 다음