Javaでは、 run()
スレッドスケジューラにスレッドを登録しますか?
どうですか construct()
,start()
そして register()
?
回答:
回答№1の場合は3Javaでは、run()はスレッドスケジューラにスレッドを登録しますか?
いいえ。 run()
直接メソッド、それは通常のメソッドとして呼び出されます。つまり、新しいスレッドではなく現在のスレッドで実行されます。
construct()、start()、register()についてはどうですか
ザ start
メソッドは新しいスレッドを作成し、その過程でスレッドはスケジューラに登録されます。 (ただし、スケジューラはJavaの漠然とした概念です。存在する必要があることは暗黙的に示されていますが、その実装と動作は通常ホストオペレーティングシステムに任されています。動作します。)
ここにはない construct()
または register()
のメソッド Thread
APIあなたが参照している場合 Thread
コンストラクタ、彼らは Thread
オブジェクトであり、作業を実行する基本スレッドではありません。後者は次の場合にのみ作成されます。 start()
が呼び出されます。
回答№2の場合は1
run()
スレッド内の実際のコードです。だからあなたは好きになることができます:
Thread childThread = new Thread() {
public void run() {
// do stuff on a new thread
}
};
(私は「Threadをそのように拡張するとは言われていませんが、醜いです。)
そのため、run()自体を呼び出しても新しいスレッドは作成されません。そのためには、start()を使用します。
childThread.start();
それで、スケジューラに対処するための新しいスレッドを与えることになると思います - しかし、それはOSレベルでは下がっています。
私はあなたが何を意味するかわからない construct()
そして register()
しかし?