Threadpool executor のドキュメントを読んでいるときに、以下を参照してください。
提供されている 2 つのメソッド remove(java.lang.Runnable) と purge() を使用して、キューに入れられた多数のタスクがキャンセルされたときにストレージの再利用を支援できます。
タスクがキャンセルされた場合、これらのメソッドを使用してワーカー キューをクリーンアップできることを理解しています。実際のソースのどの部分がこのクリーンアップを自動的に行うのかを理解しようとしています。10 のキューで開始し、そのうち 4 つのタスクがキャンセルされ、新しいタスクが到着したときに、キューのサイズが 6 になるか、キャンセルされた 4 つのタスクを無視して 10 にリセットするとします。
ソースから、次のコメントが表示されます。
/**
* Tries to remove from the work queue all
* tasks that have been cancelled. This method can be useful as a
* storage reclamation operation, that has no other impact on
* functionality. Cancelled tasks are never executed, but may
* accumulate in work queues until worker threads can actively
* remove them. Invoking this method instead tries to remove them now.
* However, this method may fail to remove tasks in
* the presence of interference by other threads.*
*/
public void purge() {
しかし、ソース内のキャンセルされたタスクをワーカー スレッドがアクティブに削除する場所を教えてください。
お時間をいただきありがとうございます。