プログラムの一般的な目的
コマンドラインからbashパターンと指定された場所を読み取り、その場所でそのパターンに一致するすべてのファイルを見つけるには、プログラムをマルチスレッドにする必要があります。
プログラムの一般的な構造
- 引数を解析して他のクラスを開始するドライバー/メインクラス。
- 後で処理するために、指定されたルートディレクトリから見つかったすべてのディレクトリアドレスを文字列配列に追加するProcessDirectoriesクラス
- 上記のクラスで見つかったアドレスを保持するDirectoryDataクラス
- 見つかった各ディレクトリを調べ、パターンに一致するファイルを文字列配列に追加して後で結果を出力するProcessMatchesクラス
- メイン/ドライバーがもう一度引き継ぎ、結果を出力します:)
問題
ProcessDirectoriesクラスがまだ機能している間でも、一致を処理する必要があります(効率を上げるために、作業を行う前にリストが入力されるのを不必要に待つ必要はありません)。これを行うには、次のことを試みます。a)DirectoryDataが空の場合はProcessMatchesスレッドをwait()にします。b)新しいエントリが追加された場合はProcessDirectories notifyAll()を作成します。
質問 :)
私が見るすべてのチュートリアルは、プロデューサーとコンシューマーが同じオブジェクト内にあること、または1つのデータ構造のみを扱うことに焦点を当てています。生成と消費に複数のデータ構造と複数のクラスを使用している場合、どうすればこれを行うことができますか?