• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:処理に時間がかかる場合、ループを1回スキップする方法)

処理に時間がかかる場合、ループを1回スキップする方法

このQ&Aのポイント
  • 処理に時間がかかった場合、ループを1回スキップさせる方法について教えてください。
  • 特定の処理で時間がかかってしまう場合、その回だけスキップさせて次に進む方法を教えてください。
  • ループ中の処理が時間を要する場合、その回だけスキップさせて次の処理に進む方法を教えてください。

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

  • ベストアンサー
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.3

ちょっとみたところ、javamailでの送信には、タイムアウトの設定がないようです。 自分で作ったというメール送信用クラスのsendMail()メソッドに機能をもたせてはどうでしょうか。 ・送信用クラスにsetTimeout()メソッドを追加 ・sendMail()メソッドは、タイムアウトの場合、 TimeoutExceptionを発生させる ・sendMail()内の処理で、監視用オブジェクトを生成し、 別スレッドで起動する。 ・監視用スレッドは、タイムアウトの場合、メール送信を中断させる おおまかに、こんな感じだと思います。 メール送信用スレッドと、監視用スレッドの間での同期に注意して設計してみて下さい。

Goody-goody
質問者

お礼

ありがとうございます。 運用中なので反映に時間がかかると思いますが、この方針で開発して、テストしてみます。

その他の回答 (2)

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.2

私には、「javamailの、sendMail()」というメソッドを 見つけることが出来ませんでした。 どのクラスですか?

Goody-goody
質問者

お礼

すみません。自分で作ったメール送付用のクラスのメソッドでした(このクラスがjavamailを使ってます)。なんとかがんばってみます。ありがとうございます。

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

送信処理を行うオブジェクトに、タイムアップ設定のメソッドが 存在しないかを、まず確認します。 あれば、それを使えば楽にできます。 タイムアップ設定もない場合は、ロックする可能性のあるメソッドを 呼び出す前に監視用スレッドを起動するしかありません。 タイマーを使うのでもいいですが、別スレッドを使うという 意味では同じです。 スレッドを実行される場所は、ロックする可能性のあるメソッドを呼び出す前です。 呼び出した後では、スレッドの起動を行うタイミングがありませんから。 また、for文の中か外かは、監視スレッドの作り方で変わってきます。

Goody-goody
質問者

補足

タイムアップは、javamailの、sendMail()で起こっています。楽にできるのでしょうか。

関連するQ&A