アプリ版:「スタンプのみでお礼する」機能のリリースについて

只今、数冊の本を読み、現在マルチスレッドの部分を
やっているのですが、

参考本AとBには
class Sample extends Thread {
というやり方が書いてあり、

参考本Cには
class Sample implements Runnable {
というやり方だけ書いてあります。

どういう事だと思い、クラスリファレンス本を読んでみると、
『マルチスレッドプログラミングを行う際にはthreadを継承するか、Runnableインターフェイスを実装します』
とだけ記述されていました。

参考本AとBは2002年に発行・改訂されており、「extends Thread」の説明しか載っていませんでした。
参考本Cは2000年発行で改訂はされていません。

Q:この2つは使い分けのようなものがあるのでしょうか?

A 回答 (3件)

#1さん答えの通り、Threadはクラスなので、


他のクラスを継承している場合使えません。

Runnableを使った場合、Threadにあるsleep()などの
メソッドを呼び出すのが多少面倒になります。
(Thread.currentThread()を使ってThreadを得る)

エレガントなのはRunnableの方。
便利なのはThreadの方と言えるでしょうか。
公式見解ではRunnableの方と言われています。
    • good
    • 0
この回答へのお礼

確かにRunnableの方はちょっと面倒だな。とは
思ってましたが、継承が関わっているという事までは
分かりませんでした。

有難うございました。

お礼日時:2003/05/27 00:47

参考書というか、動くものをとりあえず作るだけならどちらでもいいのではないでしょうか。

それを超えて、ある程度の大きさのプログラムを作る際にどのように考えるべきかについてはいくつか議論がなされています。私はきちんと理解できていない(恥)ので、とりあえず下記URLに記録されている議論を読むことをお勧めします。
(他にも市販書籍でちょっと見た覚えもありますが…)

http://java-house.jp/~takagi/archive/fj.comp.lan …
http://java-house.jp/ml/archive/j-h-b/017966.htm …
    • good
    • 0
この回答へのお礼

参考URL有難うございました。
レスが多いのと、理解不足な部分があるので
時間は掛かりますが全て目を通しておこうと思います。

お礼日時:2003/05/27 00:51

コードを書くのが手間でなければ、全部Runnableの実装でもいいでしょう。



既存のクラスを別スレッドで走らせる場合はRunnableの実装しか選択肢がありません。
    • good
    • 0
この回答へのお礼

納得しました。
有難うございます。

お礼日時:2003/05/27 00:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!