Looking at the source code of Jsoup.java , it has no state, and both parse () methods pass Parser.parse () , which internally creates and delegates TreeBuilder.parse () . Both Jsoup and Parser classes are stateless and contain only static methods. The TreeBuilder class has a state and seems to do all the work, but is created from a method, so the whole operation is thread safe due to stack / thread limitations.
source share