2016-11-24 1 views
0

Ich erzeuge nur 1000 Thread und jeden Thread Call Runtime.exec() um einen Prozess zu starten. Aber wenn ich parallel laufen Prozess beobachten durchWie viele Prozesse können gleichzeitig ausgeführt werden, die von Java Runtime.exec() aufgerufen werden?

watch -n 1 'ps -ef|grep "AppName"' 

Ich fand nur vier Prozesse gleichzeitig auf die volle Funktionalität. Meistens läuft es nur 2 oder 1 Prozess.

Hat Runtime.exce() eine Begrenzung für den Prozess parallel ausgeführt?

Antwort

0

Sie erhalten nur Parallelität, wenn viele Prozessoren oder verschiedene Operationen ausgeführt werden (z. B. ein langsamer E/A-Prozess, der in einem separaten Thread ausgeführt wird, während der Hauptthread fortgesetzt wird).

Wenn Sie mehr Threads als Kerne haben, die alle denselben Prozess ausführen, erhalten Sie nur Zeitschnitt, da das Betriebssystem jedem Thread einige Zeit gibt.

+0

Sie meinen, nur unterschiedliche Prozessnamen können parallel ausgeführt werden, derselbe Prozessname kann auch einmal pro Prozessorkern ausgeführt werden? Wie also setzt CHROME so viele Prozesse um, die den Kern übersteigen? – PDF1001

+0

Verschiedene Prozesse, verschiedene Dinge tun. Time Slicing ist im Gange: Das Betriebssystem tauscht Threads aus, um alle an die Reihe zu bringen. – duffymo

Verwandte Themen