2016-09-01 6 views
-3

개체를 병렬로 가져 오는 작업이 완료되었으므로 개체를 목록에 어떻게 추가 할 수 있습니까?Java : 미래 추가 <obj> 목록에

나는 ArrayListSite 개체를 추가하려고 시도하는 개체 목록이 Future<Site>입니다. 여기에 for 루프가 있습니다. 루프에 print 문을 추가하면 Future<Site> 개체 목록이 실제로 채워지지만 기존 목록에 추가하면 (마지막 줄) 작동하지 않는 것으로 나타납니다.

List<Future<Site>> futures=threadmaker.invokeAll(active_sites.stream().map(site -> new TAG_SCANNER(site, loggr)).collect(Collectors.toList())); 

//Now fetch all the results 
for (Future<Site> result : futures) { 
    //SOUND THE ALARMS (adding to existing list) 
    alarm_sites.add(result.get()); 
} 

편집 :

나는 미래의 get 메소드는이 결과를 반환 할 때까지 코드가 진행되지 것입니다 점에서 차단 생각했다. 내 실수는 이미 존재하는 목록에 추가하려고하는 것입니까?

+2

"작동하지 않음"이란 무엇을 의미합니까? 어떤 오류? 'alarm_sites'의 타입은 무엇입니까? – sidgate

+0

@sidgate 단순히 작동하지 않습니다. 오류가없고 아무 것도 목록에 추가되지 않습니다. alarm_sites는 사이트 개체 목록입니다. 하나의 흥미로운 점은 result.get()과 그 함수에서 Site 객체 메서드를 제대로 호출 할 수 있다는 것입니다. 제 생각에'futures'는'List '입니다. 그리스트를 반복 할 때'result'는'Future '객체 여야하며'result.get()'을 호출하면받을 것입니다 내 목록에 추가 할 수있는'Site' 객체,'alarm_sites'. – TheFunk

답변

-1

내 invokeall 명령 다음에 목록을 작성하면 문제가 해결됩니다. 기존 목록이 왜 작동하지 않았는지 확실하지 않지만 지금 당장 해결 된 문제로 표시하고 있습니다. 나중에 어떤 문제가 있었는지 확인하기 위해 살펴볼 것입니다.