• ベストアンサー

時間を計測する

お世話になります。 DBも用いた処理を行っているのですが 条件によっては検索時間が長すぎるため途中でやめたいと思っています。 SQLを発行してから1分間応答がなかったら強制的に処理を中断するということを やりたいのですが スレッドを使わないと無理でしょうか? スレッドを使わないで行う方法がありましたらアドバイスお願いします。 DBのコネクションは3分程度とっていますのでconnectionがきれたときのexceptionをとるという方法なNGです。

質問者が選んだベストアンサー

  • ベストアンサー
  • ssj
  • ベストアンサー率73% (11/15)
回答No.2

使ったことがないのですが、Statementメソッドには setQueryTimeout()という、タイムアウト時間を指定 するメソッドがあるようです。 お使いのJDBCドライバが実装しているかどうかにも よるとは思いますが、考慮してみては?

参考URL:
http://java.sun.com/products/jdk/1.2/ja/docs/ja/api/java/sql/Statement.html#setQueryTimeout(int)
watapen
質問者

補足

有り難うございます。 ちょっと実装が変わったので補足修正させてください。 DBアクセス部はCORBAを用いてCOBOLプログラムでやることになりました。 Java側は電文を発行するだけです。 よってSQLのステートメントを監視するとかする方法はとれなくなりました。 電文発行をし、その電文が帰ってくるまでの時間を計測するという事になると思います。 あるメソッドを発行して一定時間処理が終わらなかったら 強制的に次の処理に進めるという方法についての質問と変えさせてください。

その他の回答 (1)

回答No.1

スレッドを使う方法になってしまいますが、 java.sql.Statement(または派生クラス)を実行する前に、java.util.Timer/TimerTaskで1分後に実行している上記Statementをcancelするようにスケジューリング、 Statementが1分以内に終了したら、Timer/TimerTaskの方をcancel、 とかやると、比較的簡単にスレッドを扱えませんか?

関連するQ&A