One I declare a thread, and run something inside it - everything from that point on is going to run inside that thread, unless I explicitly create a new thread. No matter how many classes and methods the code passes through - it will stay in the same thread.
Correct. In fact even if you create a new thread, current thread execution flow will never be changed. This new thread will start executing some time in the future after you started it, but its flow is independent from the thread that created it.
which - and please correct me if I'm wrong - is exactly what I need most of the time with Swing
You're wrong. You don't want to do everything in the EDT. Any data fetching and manipulation in the EDT will degrade your GUI reponsiveness. Say for example you want to fetch a lot of data from a DB. If you do so in the EDT, your GUI will freeze and the user will not be able to interact with it until you finish getting it (and probably manipulating it).