I was thinking about this:
All dialogs are modal. Each showXxxDialog method blocks the
current thread until the user's interaction is complete.
However, if the current thread is the event dispatch thread, then it is
not blocked but sent to keep pumping events until the dialog is closed.
I took this as "it does not block the EDT, but when I tried to call it from other threads, those were".
Of course, you are right that this does not mean that it is thread-safe. And indeed it is not: I took a look at the code, and nowhere does it call invokeLater/Wait, or check which thread it is running on.
But the second question still remains: if I read something in javadoc (where there is no might/may), can I expect it to work the same way on all JDKs? How "trustworthy" is the JDK in implementation details?