オブジェクトがJavaでインスタンス化されるとき、それはインスタンス化されたスレッドにバインドされますか?あるスレッドにインターフェイスを匿名で実装し、それを別のスレッドに渡して実行すると、そのすべてのメソッドが元のスレッドで実行されるためです。それらが作成スレッドにバインドされている場合、それを呼び出すスレッドで実行されるオブジェクトを作成する方法はありますか?
2 に答える
3
スレッドAがオブジェクトを作成する場合:
MyClass.staticMember = new Runnable() {...};
スレッドBは、そのオブジェクトのメソッドを呼び出します。
MyClass.staticMember.run();
その後、run()
メソッドはスレッドBで実行されます。
スレッドAは、その時点で実行されているコードを実行し続けるだけです。
于 2010-03-15T05:29:21.457 に答える
1
オブジェクトは、それが作成されたスレッドにバインドされていません...メインスレッドでメソッドを実行する唯一の方法は、メインスレッドでメソッドを呼び出す場合です。
どのスレッドがメソッドを呼び出しているかを確認するのは比較的簡単です...単にダミー関数を作成します。
public threadDetect(string which)
{
System.out.println("Executed from " + which + " thread.");
}
メインスレッドでは、次のように呼び出します。
threadDetect("main");
呼び出す子スレッドから:
threadDetect("child");
OPが同様の方法を使用して、どのスレッドがメソッドを実行しているかを検出しているかどうかはわかりませんが、これは1つの方法です。
于 2010-03-15T04:59:01.627 に答える