いくつかのメソッドを呼び出して、DB からリスト X を取得しました。ここで、リストをいくつかの基準で 2 つの別個のリスト A と B に分割します。
2 つのリストは、異なる方法で処理する必要があります。しかし、私は両方のリストの処理を一度に開始したいと考えています。待ってから 2 番目の処理を開始したくありません。
これを行うための最良の方法についてアドバイスをお願いします。
私は春のWebアプリケーションです。これは特定のサービスに対してのみです。
前もって感謝します
いくつかのメソッドを呼び出して、DB からリスト X を取得しました。ここで、リストをいくつかの基準で 2 つの別個のリスト A と B に分割します。
2 つのリストは、異なる方法で処理する必要があります。しかし、私は両方のリストの処理を一度に開始したいと考えています。待ってから 2 番目の処理を開始したくありません。
これを行うための最良の方法についてアドバイスをお願いします。
私は春のWebアプリケーションです。これは特定のサービスに対してのみです。
前もって感謝します
あなたの質問は漠然としすぎています。一般的な答えは、Thread
for 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();
}
}
プログラムの非同期要素として何かを処理できるようにするには、その操作のために新しいスレッドを開始する必要があります。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();
}