각 스레드마다 N 작업을 수행하는 스레드를 실행하는 Java 응용 프로그램이 있으며 스레드 수를 설정할 수 있습니다. 각 스레드에 대한 각 작업 반복에는 20 초에서 1-1.5 분이 소요됩니다. 각 스레드는 해당 작업에 대해 약 25000-100000 반복을 수행해야합니다. 그래서 이전에 추가 된 작업은 "완료된 작업"이 더 많으며 더 높은 우선 순위를가집니다 (JVM에 대해서는 생각하지만 우선 순위는 설정되지 않았으며 프로그램 적으로 동일한 우선 순위를가집니다). 하지만 새로운 작업을 추가 한 후에는 작업을 골고루 수행 할 스레드가 필요합니다. 하고 그것을 멀티 스레딩 성능
- 올드 작업 # 1이
- 올드 작업 # 2를하고 ...
- 올드 작업 # 100 : 예를 들어 5000 개 100000 반복 100 일을하는 스레드가있다 it
그러나 예를 들어 작업 # 101을 추가하면 스레드가 첫 번째 작업만큼 빠르게 실행되지 않습니다. yield() 및 sleep (50)을 사용했지만 좋은 결과가 아닌 것 같습니다. 그래서 내가 뭘 잘못하고 너무 많은 스레드에 대해 우수한 성능을 수행 할 말해 줄 수 있습니까?
동시에 얼마나 많은 스레드가 동시에 실행되고 있습니까? – millimoose
몇 개의 코어가 있습니까? 최적의 스레드 수는 보유한 코어 수와 같습니다. –
@Inerdial 약 10000-20000. – purple