2016-05-20 6 views
2

私が理解しているところからFutureを取得する唯一の方法は、Executors.newFixedThreadPool(10)(btw、どのように多くのスレッドを使用するのですか?いくつかのサムルールがありますか?)によって得られるExecutorServiceを使用することです。だから、デフォルトのExecutorServiceはありますか?それを作成して将来のオブジェクトを取得するために維持するつもりですか?

私は理解していない、私は使用することが出来るのですかどうかである。その後、

ExecutorService executorService = Executors.newFixedThreadPool(n); 

と(例えば、いくつかのトップレベルIoCで)それを保存し、私は新しいFutureを必要なときexecutorServiceを呼びますか?

デフォルトのJavaの組み込みのExecutorServiceのように私はExecutorServiceの初期化とメンテナンスのナグを避けるために使用できますか?

+0

「デフォルトのExecutorService」とはどういう意味ですか?何をしたいですか? – Tunaki

+0

@Tunakiは 'C#'で、フレームワーク( '.net')によって自動的に管理されるので、スレッドプールを自分で作成する必要はありません。 – Tar

+2

普通のJavaでは自分でそれを行う必要があります。いくつかのフレームワークがデフォルトを提供しています。たとえばhttps://github.com/netty/netty/wiki/Using-as-a-generic-library#the-global-event-loopです。必要なスレッドの数はタスクに依存します。 CPUは、あなたがCPUコアを持っているものと同じくらい多くのタスクを処理します。ほとんどの場合、IO応答(たとえば、HTTP応答)を待つタスクが潜在的に多くあります。あなたが待っているものがどれくらいのIOを処理できるかによって異なります。 ['FutureTask'](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/FutureTask.html)はまた、executorのない未来を提供し​​ます(単純な' Thread'sでそれらを実行します) 。 – zapl

答えて

2

私が使用できるデフォルトのJavaの組み込みExecutorServiceのようなものはありませんか?

Java8があります。

java.util.concurrent.CompletableFuture.supplyAsync(...)のJavadocを参照してください。

+0

これは知っておきたいことです。悲しいことに私は現在Java 7で立ち往生しています – Tar