1

Thread#start()メソッドをオーバーライドしたい場合はできますか? はいの場合、スレッドの通常の機能に影響しますか?

4

4 に答える 4

2

あなたが意味するならThread.start()、それを上書きできることを確認してください。しかし、スレッド内で呼び出さない限りsuper.start()、スレッドは何もしません。

于 2012-06-22T07:32:27.420 に答える
1

必要に応じて上書きできます。

メソッドで何をしたいかによっては、通常の機能に影響を与える可能性があります。あなたの質問はその意味であまり具体的ではありません。ただし、メソッドで呼び出して、初期化が引き続き行われるようにする必要があります。super.start()

于 2012-06-22T07:33:01.537 に答える
1

一部の言語とは異なり、Java では、Thread.start を含むほぼすべてのものをオーバーライドできます。これを行うと、startメソッドの通常の機能に確実に影響します。一部の言語とは異なり、Java はソース コードを提供するため、元のメソッドの動作を正確に確認できますstart

一般的に見るのは良い考えです。オーバーライド メソッドが何をしなければならないかを確認するだけでなく (ほとんどの場合、スーパーを呼び出すだけです)、プラットフォームの設計哲学と優れた Java プログラミングについて多くのことを学ぶことができます。

おそらく、これがそもそもオーバーライドしている理由ですがstart、単純にオーバーライドする必要のないメソッドをオーバーライドすると、メッセージをログに記録して、それらが呼び出されたときの感覚をつかむことができると便利な場合があります。何を、なぜ。

于 2012-06-22T15:14:06.940 に答える
0

をオーバーライドできますが、Thread.start()呼び出さsuper.start()ないと、新しいスタックに新しい踏み板が作成されません。

super.start()native void start0()基本的に独自のスタックで新しいスレッドを開始 するネイティブメソッドを呼び出します。

于 2012-06-22T07:42:24.107 に答える