Ho letto il tuo codice, premetto che sicuramente il mio codice non va preso da esempio, ma non si potevano fare le stesse cose senza utilizzare pool di thread, CyclicBarrier e tutte quelle collection?