前回の記事「【Spring6ソースコード・MVC】レジストリを初期化してURLとコントローラーのマッピング関係を完成させる」では、 IOCコンテナがロードされるとレジストリのHashMapが初期化され、リクエストパスとそれに対応するHashMapが初期化されることが分かりました。メソッドはこの HashMap に格納されます。リクエストを行うと、このレジストリを通じて対応するメソッドを取得します。
SpringBoot プロジェクトが開始されると、スレッドがロードされます。
run メソッドにステップインします。
run メソッドにステップインします。
当前这个类是Worker
: クラス ワーカーは主に、その他のマイナーな記録の中でも特に、タスクを実行しているスレッドの割り込み制御状態を維持します。このクラスは、AbstractQueuedSyncer を便宜的に拡張して、各タスクの実行に関するロックの取得と解放を簡素化します。これにより、実行中のタスクに割り込むのではなく、タスクを待機しているワーカー スレッドを起動するように設計された割り込みが防止されます。setCorePoolSize などのプール制御メソッドを呼び出すときにワーカー タスクがロックを再取得できないようにするため、ReentrantLock を使用する代わりに単純な非再入可能ミューテックスを実装しました。また、スレッドが実際にタスクの実行を開始する前に割り込みを抑制するために、ロック状態を負の値に初期化し、起動時に (runWorker で) クリアします。
この実行メソッドは主にメイン実行ループを開始し、キューからタスクの実行を取り出します。