2012-06-06 2 views
1

나는 다수의 사용자를 등록하고 스레드와 병렬로 등록 된 사용자 수를 실행하고 모든 사용자가 동일한 동작 세트를 병렬로 실행해야하는 시나리오가 있습니다. 이 일을 위해 jmx는 한 번만 (한 스레드 수의 설정 스레드에서) 한 번 수행해야하는 몇 가지 작업과 이전에 등록 된 사용자의 수인 5 개의 스레드와 함께 실행되는 다른 스레드 그룹을 가지고 있으며 일부 작업은 이 사용자. 이제 5 개의 스레드를 사용하여이 전체 시나리오를 병렬로 실행하고 싶습니다.다른 스레드 그룹 내에서 스레드 그룹을 어떻게 실행합니까?

어떻게해야합니까?

include 컨트롤러를 사용했지만 스레드 그룹이 예상대로 실행되지 않아 포함 된 jmx의 5 스레드 그룹에서 발생하는 작업에 대해 25 회 반복되지 않습니다.

답변

0

나는 당신이하고있는 일을 정확하게 확신하지 못한다. 나는 jmx를 거의 안다. 그러나 여기에 몇 가지 아이디어가있다. 하나 (또는 ​​둘 다)가 관련 될 수 있습니다.

첫 번째 문제는 스레드가 인스턴스 필드를 공유하고 있다는 것입니다. 예를 들어 공통 카운터가있는 경우 25 회가 아닌 5 회를 수행하게됩니다. 공통 변수 (인스턴스 및 클래스 필드)가 올바르게 동기화되었는지 확인하십시오. 가능한 경우 지역 변수를 사용하십시오. 의 값을 모든 스레드가 아닌 개의 스레드에 적용해야 사용할 수 있습니다.

둘째, 모든 스레드가 작업을 완료하기 전에 결과를 표시하거나 이벤트를 중지하는 이벤트 일 수 있습니다. 싱글 코어 머신에서는 최악이지만, 스레드는 상상할 수있는 순서대로 실행될 수 있습니다. 그들은 한 번에 하나씩 실행할 수 있으며, 마지막으로 먼저 실행됩니다. 하나는 중간에서 멈출 수 있고, 나머지는 모두 끝내도록 한 다음 다시 시작합니다. 무리는 (다른 코어에서 또는 빠르게 스와핑하면서) 동시에 수행 할 수 있지만 다른 노드는 아무것도 수행하지 않습니다.

나는 로깅/출력 문장 (System.out.println이 충분하다)을 넣고 무슨 일이 일어나는지 직접 확인해 볼 것을 제안한다. 출력물을 이해하는 데는 시간이 걸릴 것입니다.하지만 그렇게하면 일단 상황을 제어 할 수있게됩니다.

관련 문제