JSP & Jdbc를 사용하여 응용 프로그램을 작성하고 있습니다. 여기서 사용자는 주석을 게시 할 수있는 테이블 이름이 "COMMENT_DATA"입니다. 이제 여러 사용자가 동시에 의견을 쓰고 게시하는 경우 스레드를 찾으러 갈 것입니다. 그래서 나는 데이터를 데이터베이스에 삽입하는 방법을 동기화 할 것입니다. 그렇다면 다른 요청을 처리하는 방법, 다른 요청을 대기열에 넣는 방법 및 되돌릴 방법을 데이터베이스에 쓰는 방법스레드를 사용한 요청 처리
답변
정확히를 필요한 잠금을 모두 할 것입니다. 각 HTTP 요청은 이미 자체 스레드입니다. 웹 컨테이너는 응용 프로그램의 수명 기간 동안 하나의 서블릿 인스턴스 만 생성하고 모든 요청간에 서블릿 코드가 공유된다는 점에 유의하십시오. 이는 모든 클래스 수준 변수 또는 정적 변수가 모든 요청간에 공유 될 것임을 의미합니다. 그러한 변수가 하나있는 경우 이 아니고 threadsafe가됩니다. 메서드 수준에서 요청 별 변수 threadlocal을 선언해야합니다.
JDBC에 관해서 : 솔리드 코드를 작성하면 모든 것이 잘 진행됩니다. 연결 풀을 사용하는 것은 연결 성능을 향상시키는 데 유용합니다 (실제로 노력할 가치가 있습니다. DB 연결은 풀 비용에서 연결을 재사용하는 동안 적어도 200 밀리 초 또는 그 이상까지 계산할 수있는 상당히 비싼 작업입니다.) 거의 아무것도). 그것은 당신이 쓰는 코드의 쓰레드 안전성에 아무런 변화가 없으며, 여전히 당신의 통제하에 있습니다. 기본 JDBC 코딩을 올바른 방법으로 수행하는 방법에 대한 명확한 그림을 얻으려면 this article이 유용 할 수 있습니다.
왜 이런 걱정을해야할지 모르겠습니다. 서블릿 컨테이너는 스레딩을 처리합니다 (예 : 스레드 풀을 통해). 데이터베이스가 여러 연결을 처리하므로 응용 프로그램의 여러 스레드에서 공유 상태를 수정하지 않으면이 문제에 대해 걱정할 필요가 없습니다.
그런 다음 서버가 요청 당 테이블에 데이터를 삽입합니다. – i2ijeya
요청 하시겠습니까? 예 –
위와 같이 서블릿 컨테이너는 요청에 대한 스레딩을 처리합니다. 나는. 다른 사용자가 서버에 연결하는 것보다 당신이 알고있는 새로운 스레드가 생성됩니다.
당신이해야 할 일은 jdbc 코드가 쓰레드 안전하다는 것을 보증해야하고 괜찮을 것입니다. 데이터베이스는
칼 :-) 당신을 위해
- 1. Mochiweb을 사용한 사용자 세션 처리
- 2. Qt를 사용한 XSLT 처리
- 3. sed를 사용한 처리 단
- 4. 스레드를 사용하여 클래스를 올바르게 처리 함
- 5. http 게시 요청 처리
- 6. HTTP 요청 처리
- 7. ASP.net 요청 처리
- 8. ASP.NET에서 AJAX 요청 처리
- 9. 서버 요청, 처리 방법
- 10. FastCGI 요청 처리
- 11. PHP에서 json 요청 처리
- 12. 봄의 요청 처리 방법
- 13. Java 데몬 - 종료 요청 처리
- 14. 단일 (여분) 스레드를 사용한 다중 스레드 프로그래밍
- 15. Tomcat 7의 SIP 서블릿을 사용한 비동기 요청 성능
- 16. HTTP 요청 개체 및 로컬 요청 처리
- 17. Facebook App 요청 - MVC3에서 요청 ID 처리
- 18. .NET을 사용한 HTTP POST 복잡한 요청
- 19. 동시 요청 수 10000 건 - 처리 방법
- 20. jQuery를 사용한 적절한 이벤트 처리
- 21. VSTO를 사용한 Excel 데이터 처리?
- 22. openjs를 사용한 키보드 단축키 처리
- 23. Workflow Foundation을 사용한 파일 처리
- 24. 페이징을 사용한 이미지 일괄 처리
- 25. str_replace를 사용한 간단한 템플릿 처리
- 26. 리포지토리 패턴을 사용한 뷰 처리
- 27. WebClient 개체를 사용한 예외 처리
- 28. coulldb를 사용한 urllib2 예외 처리
- 29. Hibernate를 사용한 다국어 지원 처리
- 30. 손실 압축을 사용한 이미지 처리
서블릿 컨테이너가 이미 멀티 스레드되어 있으므로 직접 처리 할 필요가 없습니다. – skaffman