say that methodD does the same as methodA + extra. I wonder if it is possible to do this (code below) and not get errors in runtime while other users are using the application (meaning thread-wise to be safe)

I don't see any issues with thread safety in this approach. However, I don't believe this is the best approach. A method called by Struts is meant to do something and then return a forward that tells Struts what to do next. With this approach, if Method A finds an error and wants to redirect to a different forward, Method D is unaware of it.

The approach I would suggest would be to refactor and put the logic that Method A and Method D have in common into a new private method. Then have both Method A and Method D call the same method to do that portion of the work and then return the appropriate forward.

As far as thread safety goes....there are no issues with passing values as parameters to methods. Parameters are stored on the stack and every thread has its own stack. The biggest issue is with using class member variables because there is only one instance of the Action class so all users would be using the same member variable.

You would NOT want to do something like the following. The issue being that by the time that myMethod accesses the member variable userId another thread may have executed and changed the value.