내 질문이 질문의보다 구체적인 실체화 : Functional programming: state vs. reassignment자바 : 함수형 프로그래밍에서 스레드 간의 상태를 공유
나는 FP에 newbee 및 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;
}
}
(이것은, 따라서 이러한 검증과 상태 대기 같은 다른 세부 사항을 생략 매우 간단한 예이다)
난 그 목적 여러 스레드간에 공유되는 다음의 클래스가있다.'전송'방법이 동기화되어 있기 때문에 은행 객체의 가변 상태는 여러 스레드와 공유되어 있어도 손상되지 않습니다. 만약 내가 자바에서 FP를 통해 똑같은 것을 달성하고 싶다면 어떻게 그 코드를 쓸 수 있을까? (실제 코드 예제를보고 싶습니다.)
EDIT : FP에 대한 내 관심은 스레드로부터 안전하고 동시적인 응용 프로그램을 작성할 수 있다는 점에서 비롯됩니다. 다음은 주장하는 기사에 대한 링크입니다. http://www.defmacro.org/ramblings/fp.html
EDIT2 : 방금 Java 용 STM에 대해 알아 냈습니다. 성능에 대해서는 확신 할 수 없지만, 내가 원하는 것을 제공하는 것 같습니다. http://multiverse.codehaus.org/60second.html
"나는 FP에 newbee 해요 자바를 통해 이해하려고 노력"아주 좋은 생각이 아니다 그. http://book.realworldhaskell.org/ –
스레드 안전과 함수 프로그래밍 사이의 연결이 보이지 않습니다. FP를 사용하면 스레드 안전을 달성하기 위해 동기화가 필요하지 않다고 주장하고 있습니까? –
@David Harkness 예. FP를 사용하는 인용 된 이유 중 하나는 (더 동기화 비용은 포함되지 않기 때문에), 따라서 FP는 본질적으로 안전하고 효율적인 스레드 상태에 대한 액세스를 동기화 할 필요가 없습니다, 불변의 상태를 사용하여 해당 인한 패러다임이다; 따라서 멀티 코어 CPU 프로그래밍에 특히 권장됩니다. 참조를 찾고 인용 할 것입니다. – shrini1000