Javaでは、ファイルのディレクトリを保持し、要求に応じて他のFileManagerにアップロードするFileManagerを作成しようとしています。アップロード要求が(ソケットを介して)着信するたびに、要求されたファイルのアップロードを処理するための新しいスレッドが作成されます。
私はこれに対処するためにExecutorService
とを使用することを考えていました。FileUploader implements Runnable
つまり、セッションがExecutorServiceであり、mySocketがFileManagerが要求をリッスンしているソケットである場合、各スレッドの作成は次のようになります。
sessions.execute(new FileUploader(mySocket.accept()));
問題は、FileManagerがデータベース内のファイルの名前を変更するコマンドを取得した場合、ファイルの名前を変更する前に、現在ファイルをアップロードしているすべてのスレッドが終了するのを待つ必要があることです。
問題は、特定のファイルをアップロードしているスレッドの数/スレッドを追跡するにはどうすればよいかということです。