162163164165166167168169170171172
case 3: assertEquals("Second", message.getText()); assertTrue(message.getJMSRedelivered()); message.acknowledge(); doneLatch.release(); break; default: errorMessage[0]="Got too many messages: "+counter; doneLatch.release();
167168169170171172173174175176177
doneLatch.release(); break; default: errorMessage[0]="Got too many messages: "+counter; doneLatch.release(); } } catch (Throwable e) { e.printStackTrace(); errorMessage[0]="Got exception: "+e; doneLatch.release();
172173174175176177178179180181182
doneLatch.release(); } } catch (Throwable e) { e.printStackTrace(); errorMessage[0]="Got exception: "+e; doneLatch.release(); } } }); connection.start();
228229230231232233234235236237238
break; case 3: assertEquals("Second", message.getText()); assertTrue(message.getJMSRedelivered()); doneLatch.release(); break; default: errorMessage[0]="Got too many messages: "+counter; doneLatch.release();
233234235236237238239240241242243
238239240241242243244245246247248
316317318319320321322323324325326
t[j] = new Worker(latch, NUM_FQNS_PER_RUN * i, NUM_FQNS_PER_RUN, modificationsPerTx); t[j].start(); } // fire the workers to start processing latch.release(); // wait for all workers to complete for (int j = 0; j < t.length; j++) { t[j].join(); } }
115116117118119120121122123124125
} finally { System.out.println("writer thread exits"); readerCanRead.release(); writerDone.release(); } } }, "WRITER"); writerThread.start();
123124125126127128129130131132133
finally { System.out.println("first thread exits"); secondCanWrite.release(); secondCanRead.release(); firstDone.release(); } } }, "FIRST"); firstThread.start();
106107108109110111112113114115116