Thứ Sáu, 23 tháng 8, 2013

Tại sao struts action lại được thiết kế non thread-safe ?


Lý do đơn giản là những lập trình viên thiết kế struts mong muốn sử dụng lại action class đã được tạo ra. Không tạo mới instance. Sử dụng chung một instance cho tất cả các thread ( Thread ở đây chính là request người dùng đến action. Mỗi request sẽ được xử lý trong một thread ). Điều này khiến action class non thread-safe. Vấn đề sẽ xuất hiện khi trong action class, bạn khai báo thêm các mutable instance field và mutable static field. Bị tác động từ nhiều thread sẽ khiến các trường giá trị này thay đổi mà bản thân lập trình viên không thể tiên đoán được. Chính vì vậy, trong struts action 1, mọi dữ liệu được đẩy lên action sẽ được truyền vào qua tham số. 

Struts action 1 là non thread safe. Nhưng struts action 2 lại là thread safe. Bạn sẽ sinh ra instance của action class cho mỗi thread. Nhờ đó bạn có thể nhận dữ liệu từ request đẩy lên action qua các mutable instance field của struts action class 2.

Không có nhận xét nào:

Đăng nhận xét