2010-01-19 25 views
9

Tôi đã tự hỏi nếu có ai có thể giải thích cho tôi mô hình luồng Java Servlets? Như tôi đã hiểu về điều đó, chỉ có một thể hiện của một servlet có thể tồn tại trong thùng chứa servlet và nếu các chủ đề muliple xảy ra chờ đợi servlet đó, các yêu cầu được tuần tự hóa theo một cách nào đó. Tôi không biết quy trình tuần tự hóa đó xảy ra như thế nào ...Java Servlets luồng mô hình

Ai đó có thể giải thích được không?

Trả lời

11

Nếu các yêu cầu được servlet xử lý theo serially, thì các ứng dụng web sẽ rất chậm. Nó thực sự là trường hợp các servlet cần phải an toàn thread, bởi vì một cá thể đơn của một servlet có thể chịu trách nhiệm xử lý nhiều yêu cầu cùng một lúc.

Thông thường, thùng chứa ứng dụng web sẽ duy trì một nhóm luồng để xử lý các yêu cầu, với các yêu cầu đến được gán cho các chủ đề theo yêu cầu.

+0

Cảm ơn bạn đã trả lời danben! Nhưng tôi có một điều nữa để làm rõ. Là phương tiện an toàn chủ đề không có trạng thái bên trong được duy trì trong một servlet. Bất kỳ cá thể servlet nào nằm trong hồ bơi đều có cùng trạng thái như chúng được tạo ra. Tôi có đúng không? Cảm ơn! –

+2

Một lớp không có trạng thái bên trong là an toàn chỉ, nhưng không phải là cách duy nhất để an toàn chỉ. Chủ đề an toàn chính nó là một cuộc thảo luận dài, nhưng ví dụ, một lớp học với trạng thái nội bộ có thể được thread-an toàn nếu nó serializes truy cập vào trạng thái nội bộ của nó. – danben

+1

Servlets cũng phải là thread an toàn vì chúng chia sẻ thông tin trạng thái với các servlet khác (các đối tượng như được lưu trữ trong ServletContext và HttpSession) –

1

Trong lịch sử bạn có hai mô hình, tùy thuộc vào Servlet của bạn. Nếu Servlet triển khai SingleThreadModel, thì các yêu cầu được xếp hàng đợi. Nếu không, và đây là mô hình duy nhất hiện tại, Servlet phải có khả năng phân phối nhiều yêu cầu cùng một lúc. Vì vậy, không có hàng đợi trong mô hình đó, trừ khi vùng chứa có một số chức năng giới hạn tốc độ.

0

có, có giao diện mô hình chuỗi đơn .it là giao diện điểm đánh dấu. nó làm cho đối tượng này của servlet đồng bộ tức là tại một thời điểm chỉ có một thread phục vụ object.but nó tạo ra các vấn đề như phản ứng delay.for giải pháp mà họ tạo ra hồ bơi của các đối tượng nhưng một lần nữa hồ bơi cũng có kích thước giới hạn.so nó là tốt hơn để sử dụng khối được đồng bộ

Các vấn đề liên quan