MainクラスはRunnableを実装している
Threadインスタンスとしてthrdを宣言して
mainメソッドで
thrd.start();
public void run() {}
の中で
thrd.sleep(1000);
とするとエラーなしで実行はできるものの注意マークがついていて気になっていた
要はstaticの問題
API referenceをみてみると
static void sleep(long millis)
システム・タイマーとスケジューラが正確であることを前提として、
現在実行中のスレッドを、指定されたミリ秒数の間、スリープ(一時的に実行を停止)させます。
となっていてsleep()メソッドはstaticがついている
しかし、staticの基本として、
static宣言されているフィールドやメソッドには
インスタンス変数名で呼び出しても→thrd.sleep();
クラス名で呼び出しても→Thread.sleep();
どちらでもOKなはず
(スッキリ入門367,368ページ)
なぜクラス名が推奨されるのかはよく分からないが
すくなくともクラス名を使うと注意マークが消えることはわかった