I've read some of the source code, and wonder why you've used volatile in so many places.
I know it is a basic part of Java, and I can google what it does.
What I want to know is what were your (the spring integration developers) reasons for using?
What did you observe that indicated it was necessary?