-3
개체를 병렬로 가져 오는 작업이 완료되었으므로 개체를 목록에 어떻게 추가 할 수 있습니까?Java : 미래 추가 <obj> 목록에
나는 ArrayList
에 Site
개체를 추가하려고 시도하는 개체 목록이 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 메소드는이 결과를 반환 할 때까지 코드가 진행되지 것입니다 점에서 차단 생각했다. 내 실수는 이미 존재하는 목록에 추가하려고하는 것입니까?
"작동하지 않음"이란 무엇을 의미합니까? 어떤 오류? 'alarm_sites'의 타입은 무엇입니까? – sidgate
@sidgate 단순히 작동하지 않습니다. 오류가없고 아무 것도 목록에 추가되지 않습니다. alarm_sites는 사이트 개체 목록입니다. 하나의 흥미로운 점은 result.get()과 그 함수에서 Site 객체 메서드를 제대로 호출 할 수 있다는 것입니다. 제 생각에'futures'는'List '입니다. 그리스트를 반복 할 때'result'는'Future '객체 여야하며'result.get()'을 호출하면받을 것입니다 내 목록에 추가 할 수있는'Site' 객체,'alarm_sites'. –
TheFunk