Context.enter()について

Java-Threadに1つのContextしか割り当てないようにするための仕組みのようです。Context.enter()が呼ばれると、既存のスレッドに対応付けられたcontextが存在する場合はそのcontextを返します。存在しない場合は、新規にcontextを生成してそれを現在のスレッドと対応付けた後に返します。
Context.enter()を用いてcontextを生成した場合、getCurrentContext()を用いて現在のスレッドに対応したcontextを得られます。
なお、Context.enter(new_context)の場合、現行のスレッドにnew_contextを割り当てようとします。もし、すでに割り当てられているold_contextが存在する場合、old_contextとnew_contextが同一オブジェクトである必要があります。まだ割り当てられていない場合、何の問題もないみたいです。
Context.enter()したらContext.exit()しないとダメみたい。
なんでこんな仕様になっているかは謎。おそらく、グローバル変数みたいなのを使わずに、どこからでもcontextを取得できるようにしたかったのかなあという妄想が限界。スレッド別にcontextを作る理由は、サーバサイドで何本ものスレッドが動いているときに、別々の制御を与えたいときなんかに使うのかなあと妄想してみる。
また、staticなメソッドを呼び出すときに、内部でContext.getCurrentContext()が呼ばれていることを考えると、使わないと不味いよなあという気にさせる。
この仕様の場合、swingと連携させたい場合はinvokeLater()を使ってイベントディスパッチスレッドからContext.enter()を呼び出さないといけないんだろうか…