私はいくつかの記事を読みましたが、私はまだ混乱しています。Java 8ストリームはアトミックですか?
私は、パラレルストリームがCPUを利用する並列方法で実行されることを知っています。私はサブジョブが原子単位として実行されると信じていますが、正しいのですか?
しかし、通常のJava 8ストリームはどうですか?
私が実行した場合のコードの次の行を言わせて:
users.stream().map(user->user.getUsername()).collect(Collectors.toList());
は、その行も同様にスレッドセーフ/アトミックな方法で実行されますか?
いいえ、サブジョブはアトミック単位として実行されませんが、それが意味するものは明確ではありません。シーケンシャルストリームは単一のスレッドで実行されるため、スレッドセーフである必要はありません。 –
したがって、マルチスレッドシステムを使用していて、シーケンシャルストリームを使用していると、競合状態によってデータが不一致になることがありますか? –
競合状態があるかどうかは、ストリーム処理とは関係ありません。私が言ったように、あなたが心に留めていることは非常に不明です –