あなたの答えはほとんどここにあります:
/* * (C) Copyright Taligent, Inc. 1996 - 無断複写・転載を禁じます
1.4 hotspot 以前は、Java でマルチスレッド コードを書くことは、主に大学院生の宿題でした。この言語は、Web アプリケーション サーバーが本格的に登場し、コンテナ駆動の高度な同時実行システムが台頭する 10 年ほど前のことでした。
1996 年、ガベージ コレクションは非常に遅く苦痛を伴うプロセスであり、通常、発生中に UI が一時停止し、動かなくなったように見えました。同様に、新しいオブジェクトを作成することは非常にコストがかかると考えられていました (Windows 95 と格闘しているときに連続したメモリ領域を作成することは、 L2 CPU キャッシュなしで 4MB の物理メモリを共有するには、しばらく時間がかかります.....)。
したがって、マルチスレッディングが非常にまれで、メモリが貴重な環境では (平均的なユーザーはおそらく 8MB または 4MB のシステム メモリを搭載した 486 または Pentium 1 を使用しています...)、 - Calendar の単一のインスタンスを可能な限り使用します。Calendar 自体は不格好な獣のようなものです。
今日、私たちは、そのようなクラスがステートフルであることがどれほど恐ろしい慣習であるかを嘲笑することができますが、当時の正しい選択として簡単に擁護することもできます。
Sun の 100% 下位互換性への執着を擁護し、それを更新しないことは当然のことです。