を使用して独立したタスクを並列に実行しようとしていjava.util.concurrent.Executor
ます。
次の作業コードがあります
public class MiniTest {
private static String[] input;
static {
input = new String[] {
"task1",
"task2",
"task3",
"task4"
};
}
public static void main(String[] args) throws InterruptedException {
ExecutorService executor = Executors.newFixedThreadPool(2);
boolean atleastOnePoolStarted = false;
for (int i = 0; i < input.length; i++) {
Runnable worker = new WorkerThread(input[i] + i);
executor.execute(worker);
}
executor.shutdown();
executor.awaitTermination(15,TimeUnit.MINUTES);
System.out.println("Finished all threads");
}
}
これは正常に機能しており、並列実行が見られます。
しかし、問題は、データベースに接続してストアドプロシージャ呼び出しを実行するWorkerThread
他のクラスに置き換えるときです。Runnable
その場合、スレッドは開始されていますが、ストアド プロシージャへの実際の呼び出しは手続き的な方法で行われているようです。つまり、2 番目の java-proc 呼び出しは、最初の呼び出しが終了するまで実行されません。
データベース部分は、独立して検証およびテストされているため、正常に機能しています。同時に 2 ~ 3 件の通話を開始する必要があります。データベースとして Sybase を使用しています。
以前にこの問題に遭遇した人はいますか? 何が間違っている可能性があるか教えてください。