That depends. I think I can get away for now by making a static wrapper class with a synchronized static method named compile() which in turn masks this only one instance of ASParser and invokes parse() on it safely.
There is only one question to my method, whether there is a performance drop from applying it or not. If the ASParser parse method is 100% busy anyway, I think forcing sequential parsing instead of parallel parsing would take exactly the same amount of time. In that case I don't really need "thread-safety".
Anyway, I do appreciate your information, it was kind of useful, and ... please, keep up the good work!