0

いくつかのメソッドを呼び出して、DB からリスト X を取得しました。ここで、リストをいくつかの基準で 2 つの別個のリスト A と B に分割します。

2 つのリストは、異なる方法で処理する必要があります。しかし、私は両方のリストの処理を一度に開始したいと考えています。待ってから 2 番目の処理を開始したくありません。

これを行うための最良の方法についてアドバイスをお願いします。

私は春のWebアプリケーションです。これは特定のサービスに対してのみです。

前もって感謝します

4

3 に答える 3

1

あなたの質問は漠然としすぎています。一般的な答えは、Threadfor each リストを生成して処理することです。

(テストされていませんが、正常に動作するはずです)

class ListAProcessor implements Runnable {

    private final List<YourListClass> list;

    public ListAProcessor(final List<YourListClass> yourListA) {
        this.list = yourList;
    }

    @Override
    public void run() {
        // Process this.list
    }

}

class ListBProcessor implements Runnable {

    private final List<YourListClass> list;

    public ListBProcessor(final List<YourListClass> yourListB) {
        this.list = yourList;
    }

    @Override
    public void run() {
        // Process this.list
    }
}

public class Main {
    public static void main(final String args[]) {
        List<YourListClass> listA;
        List<YourListClass> listB;
        // Initialize the lists
        Runnable processor = new ListAProcessor(listA);
        processor.start();
        processor = new ListBProcessor(listB);
        processor.start();
    }
}
于 2013-07-03T08:57:05.960 に答える
0

プログラムの非同期要素として何かを処理できるようにするには、その操作のために新しいスレッドを開始する必要があります。Java には、このタイプの操作をサポートする特別な API が存在します。

クラスThreadとインターフェイスRunnableを使用する必要があります。

{ //Body of some method

     List<Object> sourceList = getList();

     final List<Object> firstList  = createFirstList(sourceList);
     final List<Object> secondList = createsecondList(sourceList);

     //Define the Runnable, that will store the logic to process the lists.

     Runnable processFirstList = new Runnable() {//We create anonymous class
         @Override
        public void run() {
              //Here you implement the logic to process firstList
       }

     };


     Runnable processSecondList = new Runnable() {//We create anonymous class
        @Override
        public void run() {
              //Here you implement the logic to process secondList
       }

     };

     //Declare the Threads that will be responsible for execution of runable logic

     Thread firstListThread  = new Thread(processFirstList);
     Thread secondListThread = new Thread(processSecondList);

     //Start the Threads 

     firstListThread.start();
     secondListThread.start();

}

チュートリアルを読む必要があります

于 2013-07-03T09:15:28.010 に答える