1

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 つのスレッドを同時に実行するにはどうすればよいですか。いくつかのコードを表示していただければ、とても助かります。

4

3 に答える 3