• 締切済み

非スレッドでsleepのように処理を指定時間止めるクラス・メソッドありませんか?

現在、Struts、Servlet、Oracleの環境でDBロックの取得が出来なかった時に一定時間、間をおいて再度ロック取得を行いたいのですが、非スレッドでsleepメソッドのようなメソッド、クラスはありませんか? 教えて下さい。よろしくお願いします。

みんなの回答

回答No.2

>非スレッドでsleepメソッドのようなメソッド、クラスはありませんか? Threadクラスを使わないでやりたいということですか? スレッドクラス以外でSleppと同等の機能は知りませんが (っていうか無意味 TimerTaskをドキュメントでしらべればよろしいかと思われます。 ただ、ひとつ気になったのだが・・・ どのようなロックをかけるつもりなんですかね? 事と次第によってはJavaでやるよりPL/SQLとかでやったほうがいい場合も・・・

rickgogo
質問者

お礼

返事が大変遅くなってしまい、失礼しました。 > Threadクラスを使わないでやりたいということですか? そうです。 用語が適切ではなく分かりにくい内容になってしまい、すみません。勉強不足でした。 現在、Webアプリケーションで tomcat Struts Servlet JSP Oracle 環境で 入力画面  ↓ DBロック(取得)  ↓ DB登録  ↓ DBロック解除  ↓ 画面に登録完了メッセージ表示 の処理を行おうと思っています。 DB登録の際、入力値にテーブルに登録してある 値+1 でシステムで一意の番号(4桁連番)を設定し登録するので、 1)DBロック    ↓ 2)テーブルに登録してある値をSELECTし   一意の値決定    ↓ 3)入力値登録    ↓ 4)ロック解除 の中の 1)でロック取得失敗のSQLExceptionをcatchした際に、間を置いてDBロックをretryさせたいと思っています。 > TimerTaskをドキュメントでしらべればよろしいかと思われます。 調べてみます。 ありがとうございます。

rickgogo
質問者

補足

ngsvx さん 3rate-engineer さん 私、思いっきり勘違いしていました。 Thread.Sleep ですね。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

>非スレッドでsleepメソッドのようなメソッド、クラスはありませんか? どうしてThread.sleep()じゃダメなんでしょうか? また「非スレッドで」とありますが、これをどのような意味で使っているのかわかりません。 勘違いがあるのでは?

rickgogo
質問者

お礼

返事が大変遅くなってしまい、失礼しました。 また、質問に使用している用語が適切ではなく、分かりにくい内容になってしまい、すみません。勉強不足でした。 「非スレッド」とはThreadクラスを使用しないで実装したいという意味で書いています。javaの実行オブジェクトそれぞれが一つのスレッドと呼ぶのですね。勉強になりました。 java、Servletを始めたばかりでよく理解していない所があり申し訳ないのですが、Servlet(Struts環境)でThreadクラスを使用することは出来ると思うのですが、それは 入力画面 → DBロック(取得) → DB登録 → 画面に登録メッセージ表示 だけの処理では使用しないのかな?と思っています。

rickgogo
質問者

補足

ありがとうございます。 (抜けてました)

すると、全ての回答が全文表示されます。

関連するQ&A