-3

Java同期メソッドの呼び出しを開始するための良いサンプルはありますか. a と b の 2 つのメソッドがあり、b を非同期的に呼び出す必要があります。なにか提案を?

4

2 に答える 2

1

これは大きなトピックであり、落とし穴がたくさんあります。Callable<T>しかし、メソッドを でラップして に送信することで、良いスタートを切ることができますExecutorService.submitFuture<T>これは、メソッドを持つを返しますget()。最後のメソッドはを返しますTが、終了するまで返しませんCallable<T>

たとえば、 return としましょfoo.b()String。次のようにします。

Callable<String> asyncB = new Callable<String>() {
    @Override
    public String call() {
        foo.b();
    }
};
Future<String> futureB = myExecutorService.submit(asyncB);
// asyncB will now execute on a separate thread,
// which is managed by the ExecutorService
foo.a(); // synchronous call
String resultB = futureB.get();

Java 8 を使用している場合、最初のビットは次のようになります。

Callable<String> asyncB = () -> foo.b();
于 2014-03-26T05:56:14.647 に答える
0

万が一 Spring を使用している場合、Spring は優れた非同期サポートを備えています。

http://docs.spring.io/spring/docs/3.0.x/reference/scheduling.html

于 2014-03-26T05:58:14.010 に答える