hideaki200x の回答履歴
- Java:スレッドでエラー発生時に処理を終わらせる
以下の事が出来ずに悩んでいます。 これ参考になるかな? というようなWEBページ等がありましたら、教えていただけると助かります。 ■やりたいこと ・aaa.javaから、「スレッド1」「スレッド2」「スレッド3」の処理を呼び出し、それぞれのスレッドで処理を実行する。 ・全てのスレッド処理が完了したら、次の処理へ進む。 ・「スレッド1、2、3」で、何かしらのエラーが発生した場合は、「aaa.java」の処理を終わらせる。 ■現状 ・aaa.javaから、「スレッド1、2、3」の処理を呼び出し、それぞれ処理を実行させる事は出来た。 ・すべてのスレッドが完了したら次の処理へ進む事は出来た。 ・「スレッド1、2、3」のどこかでエラーが発生した場合でも、処理の完了となり、「次の処理」へ進んでしまう。 もうちょっと細かい事を書くと、各スレッドでは、それぞれデータ作成のSQLを実行する処理をさせているのですが、 そのSQLが何かしらの要因でエラーで戻ってきた場合、次の処理へ進んでしまうとまずいです。 そのため、どこかのスレッドのSQLがエラーになったら、スレッドを呼び出した元の「aaa.java」でエラー・終了。となるようにしたいです。 一応、各スレッドでSQLのエラーとなった場合には「catch」に飛んでる。状態ではあるのですが、aaa.java側に戻って終わらせる事が出来ず。。。 ソースはだいぶ削りましたが、参考に以下記載します。 (削りすぎている可能性もありますが、その際はごめんなさい。) すみませんが、よろしくお願いします。 ---------------------------------------- aaa.java public void Sql_Exec() throws SQLException, IOException { /* ループ条件の取得。(省略) */ //ループ処理。 for (ループ条件(省略)) { //スレッドの呼び出し。 //スレッド1 Thread_1 exec_1 = new Thread_1(引数もろもろ); Thread thr_1 = new Thread(exec_1); thr_1.start(); //スレッド2 Thread_2 exec_2 = new Thread_2(引数もろもろ); Thread thr_2 = new Thread(exec_2); thr_2.start(); //スレッド3 Thread_3 exec_3 = new Thread_3(引数もろもろ); Thread thr_3 = new Thread(exec_3); thr_3.start(); try { //全てのスレッドが終わるまで待つ。 thr_1.join(); thr_2.join(); thr_3.join(); } catch (InterruptedException e) { //例外処理 e.printStackTrace(); } } } ---------------------------------------- スレッド1~3.java public class Thread_1 extends Thread{ public void run(){ /* ループ条件の取得。(省略) */ //ループ処理。 for (ループ条件(省略)) { try (Connection con1 = DB接続。) { String sql1 = 実行SQL取得; PreparedStatement pstmt1 = con1.prepareStatement(sql1); int aaa = pstmt1.executeUpdate(); con1.close(); } catch (SQLException | IOException | JAXBException e) { e.printStackTrace(); throw new RuntimeException("例外!"); } } } } ----------------------------------------
- ベストアンサー
- kumasangao-
- Java
- 回答数3
- うちのVISTAが・・・・・
うちの母親のビスタが、パスワードを正しく入力しても、パスワードが違うと出るのです・・・・ おそらく何者かに変更されてしまったのだと思いますが・・・・ 何か解除する方法はありませんでしょうか?
- ベストアンサー
- nitrate
- Windows Vista
- 回答数3
- 情けない質問ですが・・・。
よろしくお願いします。 Windows7のアップグレード版を使用していましたが、不具合がいろいろあって再インストールを2回しました。(ほかにいい方法はあると思いますが・・・。) 今までに気付かなかったのProgram Files、Program Files(x84)です。x84が32ビットの保存先だということがわかりましたし、Windowsが勝手に振り分けてるくれるみたいですがそれでいいのですか?インストールする時に保存先の設定ができるものは64ビットのProgram Filesに保存したほうがいいのでしょうか? そして、32ビットのドライバーなどもダウンロードしてx84に保存ができるというのでしょうか?というのも、先日、もここで質問したのですが・・・。 http://oshiete1.goo.ne.jp/qa5616445.html Vistaならプリンターが動くので、アップグレードは現在止めているのです。 もう一つお願いします。 Internet Explorerも32ビットと64ビットがあるのですね。 皆様は、どちらを使ってるのでしょうか? どちらを使ったらいいのでしょうか? 私は、自然の流れで32ビットを使っていたみたいですが、PCは64ビットなのにこれでいいのでしょうか? くだらない質問かもしれませんがよろしくお願いします。
- ベストアンサー
- noname#112803
- Windows 7
- 回答数2
- どうして魚には鼻がないの?
姪っ子からの質問に困っています。 人や動物には鼻があるのに魚には鼻がないと言うのです。 以前はあって退化してしまったのか、または変わりになる部位があるのかわかりません。 漠然とした質問で申し訳ありませんが、回答、参考になる資料等がありましたらぜひお教え下さい。 よろしくお願い致します。
- ベストアンサー
- shigekousa
- 生物学
- 回答数6
- 改行コードの<BR>への変換がうまくいきません。
はじめまして よろしくお願いします。 仕事でPHPを触れはじめたところです。 textarea タグで入力されたものをMysqlに保管し、 また表示するというようなものを作ろうとしています。 困っているのは Mysqlがどうのではなくその登録前に 改行コードを <br>タグ に変換をかけておこうというところで躓いています。 セッションを開始しておいてFormタグからの値を 次のページで受け取っています。 ここの過去ログ等を参考にしてみたのですが... $_SESSION['e_biko'] = htmlspecialchars($_POST['biko'] , ENT_QUOTES) ; $tmp_biko = ""; $tmp_biko = str_replace("\r\n", "\r", $_SESSION['e_biko']); $tmp_biko = str_replace("\r", "\n", $tmp_biko); $_SESSION['e_biko'] = str_replace("\n", "<br>", $tmp_biko); このあとでechoを使って$_SESSION['e_biko'] を表示させています。 しかし改行しないんです。<BR>タグへの変換ができておらず、表示されたHTMLのソースコードを見ると改行コードがそのまま出力されています。 HTML及びPHPの文字コードはEUCで記述しています。 開発及び確認はWindows・IE6で行っています。 何か考えられる原因、あるいはバグかあるでしょうか? ちなみに下記でも駄目でした。 $_SESSION['e_biko'] = preg_replace("/\r\n|\r|\n/", "<br>", $_SESSION['e_biko']); お分かりになられる方おられましたらよろしくお願いいたします。
- Norton AntiVirus 2004のインストールができません
Norton Antivirus 2004をインストールしたくても 「エラー1606 C:\Documents&Settings\All Users\ デスクトップにアクセスできません」と出てしまい 先に進めません。 MeからXPにアップグレードする際に、 アンインストールしなかったので、アップグレード した後にアンインストールして再度インストール しようとしたら上記のようになってしまいました。 パソコンに関してあまり詳しくないのですが、 何かいい方法はありますか?
- ベストアンサー
- 12141023
- ウィルス・マルウェア
- 回答数5
- Norton AntiVirus 2004のインストールができません
Norton Antivirus 2004をインストールしたくても 「エラー1606 C:\Documents&Settings\All Users\ デスクトップにアクセスできません」と出てしまい 先に進めません。 MeからXPにアップグレードする際に、 アンインストールしなかったので、アップグレード した後にアンインストールして再度インストール しようとしたら上記のようになってしまいました。 パソコンに関してあまり詳しくないのですが、 何かいい方法はありますか?
- ベストアンサー
- 12141023
- ウィルス・マルウェア
- 回答数5
- Norton AntiVirus 2004のインストールができません
Norton Antivirus 2004をインストールしたくても 「エラー1606 C:\Documents&Settings\All Users\ デスクトップにアクセスできません」と出てしまい 先に進めません。 MeからXPにアップグレードする際に、 アンインストールしなかったので、アップグレード した後にアンインストールして再度インストール しようとしたら上記のようになってしまいました。 パソコンに関してあまり詳しくないのですが、 何かいい方法はありますか?
- ベストアンサー
- 12141023
- ウィルス・マルウェア
- 回答数5