Single vs Multi-Threaded JMS Producer

Ich wollte sehen, wie viel Zeitunterschied es bedeuten würde, einen Multi-Threaded-Produzenten anstelle eines Single-Threaded-Produzenten zu verwenden. Ich habe ActiveMQ auf meinem lokalen Computer eingerichtet und eine Producer-Klasse geschrieben, die eine JMS-Verbindung in ihrem Konstruktor initialisiert und startet. Ich habe das Nachrichtenlimit auf 3 Millionen festgelegt und es dauerte ungefähr 50 Sekunden, bis alle Nachrichten an ActiveMQ übermittelt wurden. Ich habe nur eine Zeichenfolge "Hallo Welt" 3M-mal gesendet.

Dann habe ich dasselbe Producer-Objekt (eine Verbindung, aber mehrere Sitzungen) verwendet und es mit einem ExecutorService der Thread-Größe acht ausgeführt. In demrun Methode würde ich 3M durch 8 teilen, nur um sicherzustellen, dass jeder Thread nicht mehr als 375000 Nachrichten sendet. In diesem Fall dauerte das Pushen aller Nachrichten etwa 60 Sekunden.

ExecutorService service = Executors.newFixedThreadPool(8);

    for (int i = 0; i < 8; i++) {

        service.execute(producer);
    }

Dann habe ich acht Produzenten erstellt, von denen jeder eine eigene Verbindung hat, und sie mit ExecutorService oder Threadgröße acht ausgeführt. Diesmal dauerte es ungefähr 68 Sekunden, bis alle 3M-Nachrichten gesendet wurden.

for (int i = 0; i < 8; i++) {
        service.execute(new Producer());
    }

Ich frage mich, warum ein einzelner Thread-Produzent hier besser abschneiden würde? Ich habe jedes Szenario ungefähr 10 Mal ausgeführt, aber die Ergebnisse sind gleich geblieben.