public void tSafe(List<Foo> list, Properties status) {
if(list == null) return;
String key = "COUNT";
AtomicInteger a = new AtomicInteger(Integer.valueOf(status.getProperty(key,"0")));
list.parallelStream().filter(Foo::check).
forEach(foo -> {status.setProperty(key, String.valueOf(a.incrementAndGet())); }
);
}
private interface Foo {
public boolean check();
}
、ステータスは、共有の特性であり、それは名前COUNTとキーを含みます。私の目的は、カウントを増やしてプロパティに戻して、実行されたチェックの数を数えることです。 tSafeメソッドが複数のスレッドから呼び出されているとします。最後に正しい数を取得しますか? AtomicIntegerをローカル変数として使用したことに注意してください。
スレッドセーフは、スレッドの安全性をもたらすさまざまなマルチスレッド構成要素の周りに振りかけるものではありません。 – Raedwald