2 つの実行スレッドがあり、1 つは JDBC 経由で接続し、次のような負荷の高いクエリを実行するスレッドです。
Statement stmtData = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rsData = stmtData.executeQuery("SELECT * from hugeTable");
2 つ目は、最初に述べたスレッドを開始し、ユーザーが要求した場合はもちろんキャンセルします。たとえば、長い時間がかかる可能性がある DBMS によるクエリの実行中にしましょう。
最初のスレッドで InterruptedException がスローされることを期待して、2 番目のスレッドで最初のスレッドの interrupt() メソッドを呼び出してみましたが、そうではありませんでした。
では、クエリの実行をすばやくクリーンにキャンセルするにはどうすればよいでしょうか。