2017-03-16 12 views
0

super(name)を呼び出すか、setName(name)を呼び出して、スレッドの名前をctorに設定する方が適切です。コンストラクタにスレッド名を設定する

class MyThread extends Thread{ 
    MyThread(String name){ 
//  super(name);  // which one is preferable? 
//  setName(name); 
    } 
    public void run(){ /* business logic */ } 
} 

setName()には副作用がありますか?私が尋ねる理由は、ほとんどのチュートリアルではsuper(name)を使用していますが、大学の教授が常にsetName()を入力していたYouTubeのビデオを覚えています...

+0

コンパイラは自動的に 'super()'を自動的に呼び出すので、 'super(name)'を実行することもできます。ちょうど良いコンベンション、私は推測する –

答えて

2

大きな違いはありませんスレッドの状態がNEWであるか、またはそのスレッドへのaccess privilegesが変更された場合、スレッドのインスタンス化後にsetName()を呼び出します。つまり、驚きを避けるために、スレッドのインスタンス化中に名前を設定する方が良いでしょう。

関連する問題