第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

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

企画広告も役立つ情報バッチリ! Sponsored