0

ですから、最近、学校でJavaスレッドについて学んでいるのではないかと思っています。

他のほとんどの言語とは異なり、私はまだJavaで関数をスレッド化する方法を見つけていません。これは、本当に私が探しているものです...

runクラスを使用できることは知っていますが、クラスに3つの関数があり、それぞれに独自のパラメーターがあると想像してください。これらの関数を呼び出して、可能であれば個別にスレッド化できるようにしたいと思います...

4

3 に答える 3

10
new Thread(new Runnable() {
    public void run() 
    {
         functionToThread();
    }
}).start();
于 2012-11-25T15:57:06.573 に答える
4

Java でマルチスレッドを実現するための正しいアプローチは、 を実装することRunnableです。クラスを拡張するのThreadは便利な少し簡単な方法ですが、Runnableインターフェイスを実装するのが最善です。これによりrun()、関数を呼び出すことができるメソッドが提供され、 の代わりに他のクラスを拡張できるようになるためですThread

ただし、アクセスできないのは、他のスレッドで実行している関数の戻り値です。Futureこれには、他のスレッドが関数を実行するとすぐに、戻り値が入力されるオブジェクトを提供する を使用できます。を実装する代わりに、非常によく似た を実装し、そのメソッドを の代わりに呼び出すRunnableことで、ジェネリックを介して戻り値の型を指定できるようにします。オブジェクトは、スレッド プールおよびタスク エグゼキュータでも使用できます。クラスの javadoc の例を見てください。良い例と説明があります。Callablecall()run()FutureFuture

また、メソッド内で匿名クラスを作成できることも覚えておいてください。そのため、単純に後で実行する場合は、別のスレッドで実行するメソッド内でインライン (Runnableまたは拡張) するだけです。Callable(クランチャーが彼の答えで示したように)

于 2012-11-25T16:03:31.690 に答える
1

Runnableスレッドを実装または拡張し、関数を呼び出す個別のラッパー クラスを作成する必要があります。

ところで、Java に C のような種類のメソッド ポインターがあったとしても、関数に渡したいパラメーターの値を知っているラッパーが必要です。

于 2012-11-25T15:54:15.847 に答える