웹 서비스에 도달 한 1000 개의 스레드가 있고 호출에 걸리는 시간이 있습니다. 우리는 각 스레드가 주 응용 프로그램에 자신의 타이밍 결과를 반환하여 다양한 통계를 기록 할 수 있기를 바랍니다. 다양한 도구가 고려 된 점에 유의하십시오. 그러나 여러 가지 이유로 자체 작성해야합니다. 각 스레드가 타이밍을 반환하는 가장 좋은 방법은 무엇입니까? - 우리는 지금까지 두 가지 옵션을 고려했습니다. - 1. 스레드가 타이밍 결과를 얻으면 동기화 된 메서드를 제공하여 파일에 쓸 단일 스레드를 호출합니다. 이렇게하면 모든 각 스레드가 차례대로 (미정 인 순서로 있음에도 불구하고) 파일에 쓰고, 스레드가 타이밍 결과를 얻은 후에 호출이 이루어지기 때문에 쓰기를 기다리는 것이 차단되지 않습니다. 정말로 문제. 모든 스레드가 완료되면 주 응용 프로그램은 파일을 읽고 통계를 생성 할 수 있습니다. 2. Executor, Callable 및 Future 인터페이스 사용 가장 좋은 방법은 무엇입니까? 아니면 더 좋은 방법이 있습니까? 사전에 대단히 감사 폴Java : 여러 스레드에서 타이밍을 검색하는 가장 좋은 방법
답변
후자의 방법을 사용하십시오.
직원이 호출 가능을 구현합니다. 그런 다음 스레드 풀에 제출하고 각각에 대한 Future 인스턴스를 가져옵니다.
그러면 Futures에서 get()을 호출하여 계산 결과를 얻습니다.
import java.util.*;
import java.util.concurrent.*;
public class WebServiceTester {
public static class Tester
implements Callable {
public Integer call() {
Integer start = now();
//Do your test here
Integer end = now();
return end - start;
}
}
public static void main(String args[]) throws Exception {
ExecutorService pool = Executors.newFixedThreadPool(1000);
Set<Future<Integer>> set = new HashSet<Future<Integer>>();
for (int i =0 ; i < 1000 i++) {
set.add(pool.submit(new Tester()));
}
Set<Integer> results = new Set<Integer>();
for (Future<Integer> future : set) {
results.put(future.get());
}
//Manipulate results however you wish....
}
}
이것은 내가 마음에서 가지고 있었던 정확하게 것이었다.. :)!!! – hakish
답장을 보내 주셔서 대단히 감사드립니다. 매우 감사 – user396707
내가 생각할 수있는 또 다른 가능한 해결책은, 그것을 감소시키는 각 스레드는, (그들은 완성되어 신고) (자바 동시성 패키지에서)을 해, CountDownLatch를 사용하는 것입니다 다음 번에 모든 (완전하고 CountDownLatch가 0에 도달했습니다.) 메인 스레드가 행복하게 모든 것을 통과하여 시간을 묻습니다.
여기서 Executor 프레임 워크를 구현할 수 있습니다. 시간 처리는 Callable 객체로 처리 할 수 있습니다. Future는 스레드가 처리를 완료했는지 식별하는 것을 도와줍니다.
결과에보고 할 스레드에 ArrayBlockingQueue을 전달할 수 있습니다. 그런 다음 대기열에서 파일에 쓰는 파일 쓰기 스레드를 가질 수 있습니다.
- 1. 숫자 목록을 저장하고 검색하는 가장 좋은 방법
- 2. XML 태그 값을 검색하는 가장 좋은 방법
- 3. if 문에서 여러 '또는'조건을 지정하는 가장 좋은 방법 (Java)
- 4. Java 파일을 배포하는 가장 좋은 방법
- 5. 여러 스레드에서 정보를 얻는 방법은 무엇입니까? Java
- 6. 여러 문자열을 검색하는 Java ArrayList
- 7. 전화 번호를 검색하는 가장 좋은 방법은 무엇입니까?
- 8. 여러 소스를 동시에 검색하는 가장 좋은 방법은 무엇입니까?
- 9. 이 데이터를 검색하는 가장 좋은 방법은 무엇입니까?
- 10. Java GUI를 설정하는 가장 좋은 방법
- 11. 부스트 :: 스레드에서 스레드 ID를 검색하는 방법?
- 12. QML Modal 대화 상자에서 값을 검색하는 가장 좋은 방법
- 13. 여러 언어를 저장/사용하는 가장 좋은 방법
- 14. 여러 스크롤링 열을 처리하는 가장 좋은 방법
- 15. Subversion에서 여러 앱을 관리하는 가장 좋은 방법
- 16. 데이터베이스에 여러 플래그를 저장하는 가장 좋은 방법
- 17. 여러 TBytes 배열을 결합하는 가장 좋은 방법
- 18. VB.NET에서 DataGridView를 검색하는 가장 좋은 방법은 무엇입니까?
- 19. Rails에서 날짜별로 검색하는 가장 좋은 방법은 무엇입니까?
- 20. GitHub를 검색하는 가장 좋은 방법은 무엇입니까?
- 21. Java - 두 개의 WebContainer 스레드에서 여러 요청
- 22. 여러 테이블에서 단어를 검색하는 방법
- 23. 쉼표로 구분 된 mysql 필드를 검색하는 가장 좋은 방법
- 24. iPhone : UIControl에 연결된 NSManagedObject를 저장하고 검색하는 가장 좋은 방법
- 25. lucene에서 날짜 사용 가능성을 검색하는 가장 좋은 방법
- 26. .net의 데이터를 찾기 위해 큰 파일을 검색하는 가장 좋은 방법
- 27. 정렬 된 목록에서 채도 값을 검색하는 가장 좋은 방법
- 28. IOS가 포함 된 Google 북마크를 검색하는 가장 좋은 방법
- 29. 가장 좋은 방법
- 30. 여러 스레드에서 실행되는 코드 섹션을 식별하는 방법
웹 서비스의 스레드 처리에 따라 달라질 수 있습니다. – hakish