私の質問は、この質問のより具体的なインスタンス化です:関数型プログラミング: 状態と再割り当て
私は FP の初心者であり、Java を通じてそれを理解しようとしています。
オブジェクトが複数のスレッド間で共有される次のクラスがあります。
public class Bank
{
private double[] accounts = new double[1000];
public synchronized void transfer(int from, int to, double amount)
{
account[from] -= amount;
account[to] += amount;
}
}
(これは非常に単純化された例であるため、検証や条件待機などの他の詳細は省略されています)。
transfer メソッドは同期化されているため、複数のスレッドで共有されていても、Bank オブジェクトのミュータブルな状態が崩れることはありません。Java で FP を使用して同じことを実現したい場合、そのコードはどのように記述すればよいでしょうか? (実際のコード例を見たいです)。
編集: FP に対する私の関心は、スレッドセーフな並行アプリケーションを作成する可能性に由来しています。以下は、それを主張する記事へのリンクです: http://www.defmacro.org/ramblings/fp.html
EDIT2: Java 用の STM について知りました。パフォーマンスについてはわかりませんが、私が望んでいたものを提供しているようです。http://multiverse.codehaus.org/60second.html