Struts 1 actions are singleton. So, all threads operate on the single action object and hence make it thread-unsafe.
Struts 2 actions are not singleton, and a new action object copy is created each time a new action request is made and hence it is thread-safe.