第12回:スレッド (2/2)

徹底攻略Java 2プログラマ問題集 Platform 1.4対応
徹底攻略Java 2プログラマ問題集 Platform 1.4対応

第12回:スレッド
著者:八木裕乃/明壁敦子
監修者:須澤秀人  編者:ソキウス・ジャパン   2005/9/1
前のページ  1  2
解答

   1ページ目の問題の解答を掲載します。解答には、問題の正解やその理由だけでなく、用語や重要事項などが詳しく解説されています。
第1問の解答: A

   スレッドを作成し、そのスレッド上で処理を実行するには以下の手順に従います。

  1. Threadオブジェクトを作成します。
  2. 1で作成したThreadオブジェクトのstartメソッドを呼び出します。すると、オーバーライドされたrunメソッドが呼び出され、処理が行われます。
   13行目のmainメソッド内でThreadオブジェクトを作成し、そのstartメソッドを呼び出しています。ここでは、Runnableインタフェースを引数に取るコンストラクタを利用してThreadオブジェクトを作成しています。Xクラスは01〜11行目までに定義したRunnableインタフェースを実現したクラスとなります。Runnableインタフェースは、以下のメソッドを持ちます。

public void run()
   runメソッドは、startメソッドにより呼び出されるので、スレッド上で実行したい処理を記述します。

   14行目のstartメソッドの呼び出しにより、Runnableインタフェースを実現したXクラスの02行目のrunメソッドが呼び出され、「run」と表示します(A)。runメソッドが終了すると、スレッドは終了します。

   14行目で呼び出したstartメソッドは、Threadクラスのメソッドであり、Xクラスのstartメソッドは呼ばれません。また、stopメソッドもスレッドによって自動的に呼ばれることはありません。Threadクラスにはstopメソッドがあり、以前のJ2SDKでは、スレッドを終了したいときに利用しましたが、現在は推奨されないメソッドになっています。したがって、Aが正解です。

第2問の解答: E

   12行目のmainメソッドが実行されると、13行目でRunnableインタフェースを実現したAクラスを引数としたスレッドが作成され、startメソッドの呼び出しにより、実行可能な状態になります。同様に、14行目でも新たにスレッドが実行可能な状態になります。

   新たに作成された2つのスレッドは、同じクラスを元にしているので、同じ処理を行います。

   処理される内容は03〜09行目のrunメソッドです。ここでは、インスタンス変数x、yの値を1ずつ増加して表示します。2つのスレッドはそれぞれAクラスのオブジェクトを作成していて、x、yはインスタンス変数なので、2つのスレッドはそれぞれ変数x、yを別々のものとして持ちます。つまり、それぞれのスレッドの持つ変数x、yは互いに影響し合うことはありません。片方のスレッドが05行目でx++を行ったあとでスレッドが切り替わり、もう一方のスレッドがx++を実行したとしても、別の変数xに対する処理になります。よって、xとyの値は常に等しいことになります。

   また、x、yの値は、それぞれ1ずつ増加するので、x=1、y=1のあと、連続してx=1、y=1が表示されるとは限りませんが、2度同じ数字が出現します。

   したがって、正解はEとなります。

第3問の解答: A、D

   各選択肢に関する説明は以下のとおりです。

A. waitメソッドはjava.lang.Objectクラスのメソッドで、ほかのスレッドがこのオブジェクトのnotifyメソッドまたはnotifyAllメソッドを呼び出すまで、現在のスレッドを待機させます。
B. notifyメソッドnotifyAllメソッドはjava.lang.Objectクラスのメソッドで、待機中のスレッドを実行可能な状態に戻します。
C. notifyメソッドとnotifyAllメソッドはjava.lang.Objectクラスのメソッドで、待機中のスレッドを実行可能な状態に戻します。
D. sleepメソッドはjava.lang.Threadクラスのメソッドで、現在実行中のスレッドを、指定されたミリ秒数の間、スリープ(一時的に実行を停止)させます。
E. synchronizedブロックを抜けると、ロックが解除され実行可能な状態になります。
   したがって、ADが正解です。

前のページ  1  2

書籍紹介
徹底攻略Java 2プログラマ問題集
Platform 1.4対応

徹底攻略Java 2プログラマ問題集 Platform 1.4対応 SUN Java認定コースを担当する著者が臨場感ある問題と解説を書き下ろし!出題傾向をカバーする精錬問題を豊富に用意しているので、短期間で効率よく学習できます。実際の出題傾向を問題に盛り込むほか、詳しい解説をそれぞれ用意。単純な正否だけでなく、選択肢ごとになぜこれが正しいか、誤っているかその根拠をていねいに紹介しています。最終章の総仕上げ問題で試験の模擬対策も万全です!
発売日:2004.12.17発売
販売価格:3,360円(税込)

著者プロフィール
八木 裕乃
株式会社CSK 教育サービス事業部に所属。現在は、Java、UMLを利用したオブジェクト指向系の開発講座のコース開発からインストラクションまでを担当。Javaとはα版からの付き合いでそろそろ10年来となる!?取得資格:SJC-P、SJC-WC、OCUP Foundamental、MCSD、オラクルマスターなど著書:「マイクロソフト認定技術資格試験 MCP/MCSE必須用語辞典」(アスキー)



著者プロフィール
明壁 敦子
株式会社CSK 教育サービス事業部に所属。Java、UML、XML、オブジェクト指向、Webアプリケーション開発などの教材作成および講義を担当。Sun認定Javaインストラクタとしては、自らがJavaの習得に苦労した経験から、初心者でも解りやすい講座を心がけている。取得資格:SJC-P、SJC-WC、OCUP Fundamentalなど



監修者プロフィール
須澤 秀人
株式会社CSK 教育サービス事業部に所属。Java、UML、XML、ASP.NET、C、C++などの教材作成および講義を担当。「よく食べよく寝る」が座右の銘。取得資格:SJC-P、SJC-WC、OCUP Fundamentalなど著書:「dBASE?PLUSパーフェクトマスター入門編」(秀和システム)、「基本情報技術者 午後 Java スーパー攻略」(秀和システム・共著)など



編者プロフィール
株式会社ソキウス・ジャパン
クォリティ・メディア・カンパニーを標榜する出版社。2001年11月設立。2002年10月より株式会社インプレスと協業し、これまで30冊近い「徹底攻略問題集」を編纂する。また、自社で月刊「オープン・エンタープライズ・マガジン」を発行、発売している。
http://www.sociusjapan.co.jp/


INDEX
第12回:スレッド
  問題
解答
徹底攻略Java 2プログラマ問題集 Platform 1.4対応
第1回 クラス定義とアクセス制御
第2回 制御文、アサーションと例外処理(1)
第3回 制御文、アサーションと例外処理(2)
第4回 ガーベッジコレクション
第5回 Java言語の基礎(1)
第6回 Java言語の基礎(2)
第7回 演算子とデータのメモリ割り当て(1)
第8回 演算子とデータのメモリ割り当て(2)
第9回 オーバーロード、オーバーライド、実行時のデータ型(1)
第10回 オーバーロード、オーバーライド、実行時のデータ型(2)
第11回 オーバーロード、オーバーライド、実行時のデータ型(3)
第12回 スレッド
第13回 java.langパッケージのJava言語の基礎
第14回 コレクション・フレームワーク

人気記事トップ10

人気記事ランキングをもっと見る