많은 수의 반복에 대해 0부터 9까지의 임의의 정수에서 1의 수를 계산하는 간단한 프로그램이있는 경우 sum 함수를 사용하여 1의 (numOnes)를 계산하는 변수를 어떻게 줄일 수 있습니까? 나중에 내 프로그램에서 총계를 사용할 수 있어야합니다.Java 스레드에서 reduce 함수를 적용하는 방법은 무엇입니까?
이것은 OpenMP의 감소 지시문과 동일합니다.
public void run() {
long work = total_iterations/threads;
long numOnes = 0;
for (long i = 0; i < work; i++) {
int randomNum = rand.nextInt(9);
if (randomNum == 1) {
numOnes += 1;
}
}
}
각 스레드가 실행 완료되면 집계 결과가 포함 된 numOnes를 사용할 수 있기를 원합니다.
나는 모든 스레드를 기다립니다 가입이 완료 이해하지만 어떻게 구체적으로 당신은 스레드에 가입 한 후 모든 지역 변수 numOnes을 요약 것인가? – arvarik
빠른 승인을 보내 주셔서 감사합니다. 귀하의 의견에 관해서 : ExecutorService를 공부할 수 있다고합니다. 그 하나는 Runnable 인스턴스뿐만 아니라 호출 가능한 인스턴스도 전달할 수 있습니다. 그리고 그것들은 예를 들어 가치를 반환 할 수 있습니다! 더 많은 질문이있을 때 알려주십시오. – GhostCat