2 つのスレッドを作成する必要があります。1 つはスケジューラ エグゼキュータ サービスを呼び出し、もう 1 つはファイルを取得して処理するために無限ループで実行されます。
次のコードを使用します。
ScheduledExecutorService executor = new ScheduledThreadPoolExecutor(1);
executor.scheduleAtFixedRate(new Runnable() {
public void run()
{
obj.checkFileExist();
obj.enqueue();
}
}, 0, 1, TimeUnit.MINUTES);
そして、無限ループでファイルを 1 つずつ処理します。
public class processModel extends Thread{
public static void getQueueSize(int size)
{
System.out.println("getting queue size");
}
public void dequeue()
{
// dequeue the queue
System.out.println("dequeue");
}
public void processFile()
{
// process the file
System.out.println("process file");
}
public static void main(String[] args) {
final boolean flag = true;
final int size = 9;
final processModel obj = new processModel();
Thread t1 = new Thread(){
public void run()
{
while(flag)
{
obj.dequeue();
obj.processFile();
getQueueSize(size);
}
}
};
t1.start();
}
}
どうすれば両方を同時に達成できますか?
- スレッド 1 - ファイルがフォルダーに存在するかどうかを確認します。はいの場合は、それをキューに入れます。そうでない場合は、1分間スリープします..-スケジューラーはこれを実行できます
- スレッド 2 - キューが空でない場合は、1 つずつ処理します。そうでなければ、1分間寝ます
これら 2 つのスレッドを同時に実行するにはどうすればよいですか。いくつかのコードを表示していただければ、とても助かります。