1
2
3
4
5
6
7
8
9
10
11
12
13
14 package ch.qos.logback.core.contention;
15
16 abstract public class AbstractMultiThreadedHarness {
17
18 abstract public void waitUntilEndCondition() throws InterruptedException;
19
20 public void execute(RunnableWithCounterAndDone[] runnableArray) throws InterruptedException {
21 Thread[] threadArray = new Thread[runnableArray.length];
22
23 for (int i = 0; i < runnableArray.length; i++) {
24 System.out.println("Starting "+runnableArray[i]);
25 threadArray[i] = new Thread(runnableArray[i], "Harness[" + i + "]");
26 }
27 for (Thread t : threadArray) {
28 t.start();
29 }
30
31 waitUntilEndCondition();
32 for (RunnableWithCounterAndDone r : runnableArray) {
33 r.setDone(true);
34 }
35 for (Thread t : threadArray) {
36 t.join();
37 }
38 }
39 }