Since Tapestry 5.2, it seems that per-thread scope services are not thread-safe (some of our integration tests executed in parallel fail since Tapestry 5.2).
The proxy managed by Tapestry does not create a new instance of the service for each request/thread as expected.
That leads to strange behaviour when you use the Environmental services as data's container for example.
I also noticed that the synchronization of some resources (used by per-thread scope services) is effective only for jdk 1.5 (see PerthreadmanagerImpl's constructor and JDUtils.JDK_1_5). But this aspect does not explain everything : the tests fail with JDK 1.5 too.
The related discussion here : http://tapestry.1045711.n5.nabble.com/Tapestry-5-2-Per-thread-scope-services-not-thread-safe-td4825735.html