2014-07-24 3 views
3

나는 동기화를 코딩하는 동안주의를 기울여야 할 많은 블로그와 기사를 읽었다. 그들은 concashHashMap, synchronizedList 등을 사용할 것을 요청합니다.자바 웹 애플리케이션의 동시성

자바 웹 응용 프로그램, 응용 프로그램 서버 (예 : jboss, weblogic, tomcat)에서 모든 요청은 별도의 스레드에서 실행됩니다.

메소드 실행 시퀀스 1 -> 메소드 2 -> 메소드 3이 있고, 모든 요청에는 자체 실행 스택이 있습니다. 그렇다면 우리는 왜 동기화에 대해 더 생각할 필요가 있습니까?

동시 요청에 대한 제 이해가 올바르지 않거나 동기화 시나리오에 대해 뭔가 빠져 있습니다.

알려 주시기 바랍니다.

답변

4

대부분의 응용 프로그램에서 요청 처리에는 다른 요청을 동시에 처리하는 다른 스레드가 액세스 할 수있는 일부 공유 데이터에 액세스해야하기 때문입니다.

HTTP 세션이 대표적인 예이다 : 동일한 세션 공유 같은 HttpSession 객체의 모든 요청, 그래서 브라우저가 동시에 두 개의 요청을 보내는 경우, 그 요청을 처리하는 두 개의 스레드에서 같은 HttpSession 개체에 액세스하려고 할 수 있습니다 동시. 세션이 손상되지 않도록 동기화가 필요합니다.

+0

더 간단한 방법으로 파일에 데이터를 쓰는 쓰레드가 거의없는 파일 일 수도 있습니다. –

+0

공유 데이터는 종종 관계형 데이터베이스에 저장되며 "동기화"는 데이터베이스 트랜잭션을 신중하게 사용하여 일관성없는 상태로 데이터가 노출되지 않도록합니다. (하지만 이것은 파일에 저장된 데이터에 관한 @ AnkitSharma의 요지에 불과합니다.) – Wyzard

+0

예 전적으로 당신과 동의합니다. 나는 지금 막이 점을주의했다 새로운 biel 것 신속하게 일을 관찰하십시오. –

관련 문제