- ベストアンサー
処理に時間がかかる場合、ループを1回スキップする方法
- 処理に時間がかかった場合、ループを1回スキップさせる方法について教えてください。
- 特定の処理で時間がかかってしまう場合、その回だけスキップさせて次に進む方法を教えてください。
- ループ中の処理が時間を要する場合、その回だけスキップさせて次の処理に進む方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ちょっとみたところ、javamailでの送信には、タイムアウトの設定がないようです。 自分で作ったというメール送信用クラスのsendMail()メソッドに機能をもたせてはどうでしょうか。 ・送信用クラスにsetTimeout()メソッドを追加 ・sendMail()メソッドは、タイムアウトの場合、 TimeoutExceptionを発生させる ・sendMail()内の処理で、監視用オブジェクトを生成し、 別スレッドで起動する。 ・監視用スレッドは、タイムアウトの場合、メール送信を中断させる おおまかに、こんな感じだと思います。 メール送信用スレッドと、監視用スレッドの間での同期に注意して設計してみて下さい。
その他の回答 (2)
- ngsvx
- ベストアンサー率49% (157/315)
私には、「javamailの、sendMail()」というメソッドを 見つけることが出来ませんでした。 どのクラスですか?
お礼
すみません。自分で作ったメール送付用のクラスのメソッドでした(このクラスがjavamailを使ってます)。なんとかがんばってみます。ありがとうございます。
- ngsvx
- ベストアンサー率49% (157/315)
送信処理を行うオブジェクトに、タイムアップ設定のメソッドが 存在しないかを、まず確認します。 あれば、それを使えば楽にできます。 タイムアップ設定もない場合は、ロックする可能性のあるメソッドを 呼び出す前に監視用スレッドを起動するしかありません。 タイマーを使うのでもいいですが、別スレッドを使うという 意味では同じです。 スレッドを実行される場所は、ロックする可能性のあるメソッドを呼び出す前です。 呼び出した後では、スレッドの起動を行うタイミングがありませんから。 また、for文の中か外かは、監視スレッドの作り方で変わってきます。
補足
タイムアップは、javamailの、sendMail()で起こっています。楽にできるのでしょうか。
お礼
ありがとうございます。 運用中なので反映に時間がかかると思いますが、この方針で開発して、テストしてみます。