メンバー掲示板
-
自由の女神 さん 06/08 14:01
地震で失業しても、どんなに風評被害で苦しんでも大丈夫!
無職でも月収150万を稼ぐ方法⇒http://ii-mail.info/ff/wizard/form.cgi
-
にわとり さん 08/26 20:07
[続き]
問題の趣旨とは関係のないエラーのような感じもしておりますが、止むを得ず、clientSocket.closeメソッドを入れ子の、tryブロック内で記述を行うと、コンパイルも通り、マルチスレッドの動作が実現できました。
例外に関する理解か、もう少し基本的な点での足りなさかとは、思いますが、このコンパイルエラーがどうして発生するのかにつきましてどなたかご教示またはヒントのようなものを頂けますでしょうか?
ソースは、こちらにアップさせて頂きましたが、問題等ありましたらご指摘賜りたく、よろしくお願い致します。
http://www.freeml.com/patterns/file/218284
-
にわとり さん 08/26 20:07
すいません『増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編』の問題7-6(255P)について、質問があり投稿させて頂きます。書籍を前提とさせて頂いており恐縮ですが、よろしくお願い致します。
私はこの回答に、serverSocketがacceptした時に、クライアントのスレッドを実行するインスタンスを生成するような動きが分り易いのではと考え、MiniServerクラスに、以下のように修正を致しました。
[List 7-19]-19Line
【修正前】 Service.service(clientSocket);
【修正後】 new Service(clientSocket).start();
Sericeクラスは、Threadクラスを継承し、run()メソッドから、serviceメソッドを呼び出すようにしました。
スレッドを生成するクラスが変わりますが、startメソッドを実行しているのは、host役のMiniServerクラスなので、Thread-Per-Messageパターンとしても特に問題なのではと思ったのですが、なぜか、コンパイル時に、ServiceクラスのDataOutputStreamに対応したTry分のfinalブロックで実行している、clientSocket.close();メソッドで、
\Service.java:46: 例外 java.io.IOException は報告されません。スローするにはキャ
ッチまたは、スロー宣言をしなければなりません。
clientSocket.close();
というコンパイルエラーが出てしまいました。
[続く]



