5

私はC#を学ぼうとしています!私はプログラミング言語間のJavaに最も精通しています!ちょうど今、私はTaskのを理解しようとしています!TaskJavaのようなものはありますか?

Taskとスレッドの違いは何ですか?Taskスレッドができないことを提供するものは何ですか?基本的に、なぜが必要なTaskのですか?

4

5 に答える 5

9

最も近い 1:1 クラスはFuture<T>orCompletableFuture<T>です。には、C#CompletableFutureのものと同様の追加の連鎖メソッドがいくつかあります。Task<T>

どうやらタスク並列ライブラリ (C#) の初期のバージョンでは( http://www.nedstoyanov.com/promises-and-futures/ )Task<T>と呼ばれていました。Future<T>

于 2017-01-01T23:49:39.190 に答える
5

Java 7 で導入された Fork/Join フレームワークは、おそらく最も近いものです。

http://docs.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html

于 2012-08-18T11:28:23.800 に答える
2

タスクはやりたいこと、スレッドはタスクを実行するもの

例: リクエストごとに新しいスレッドを開始する Web サーバー

 class ThreadPerTaskWebServer {
    public static void main(String[] args) throws IOException {
        ServerSocket socket = new ServerSocket(80);
        while (true) {
            final Socket connection = socket.accept();
            Runnable task = new Runnable() {
                public void run() {
                    handleRequest(connection);
                }
            };
            new Thread(task).start();
        }
    }
}
于 2012-08-18T11:25:47.913 に答える
1

ドキュメントを見ると、タスクはマルチスレッド プログラミングを行うための推奨される方法であると記載されています。

システム リソースのより効率的でスケーラブルな使用。

バックグラウンドで、タスクは ThreadPool のキューに入れられます。ThreadPool は、スループットを最大化するスレッド数を決定して調整するアルゴリズム (山登り法など) で強化されています。これにより、タスクが比較的軽量になり、多くのタスクを作成して細粒度の並列処理を有効にすることができます。これを補完するために、広く知られているワークスティーリング アルゴリズムを使用して負荷分散を提供します。

スレッドまたはワークアイテムよりもプログラムによる制御が可能です。

タスクとその周りに構築されたフレームワークは、待機、キャンセル、継続、堅牢な例外処理、詳細なステータス、カスタム スケジューリングなどをサポートする API の豊富なセットを提供します。

msdn

したがって、タスクは実際にはスレッドですが、より簡単なインターフェイスを備えています。基本的にあなたと同じことを尋ねるこの質問を見ることもできます: SO質問

于 2012-08-18T11:22:49.447 に答える