@Test public void test() throws Exception { reqThread = new Requester("requester"); // start requester, which waits for the responder to JOIN reqThread.init(); reqThread.start(); // start responders for (int i = 0; i < NUM_RESP; i++) { Responder resp = new Responder("responder" + i); resp.init(); resp.start(); respThreads.add(resp); } // wait for responders to finish for (Responder resp : respThreads) { resp.join(); } // wait for requester to finish reqThread.join(); reqThread.destroy(); // destroy all responders once requester is done for (Responder resp : respThreads) { resp.destroy(); } // leave some time for resources to be freed Thread.sleep(200); log.info("received: " + totResponses + " expected: " + expected); assertTrue(totResponses == expected); }