1 | package com.hammurapi.common; |
2 | |
3 | import java.util.concurrent.locks.Lock; |
4 | import java.util.concurrent.locks.ReentrantLock; |
5 | |
6 | /** |
7 | * LocalJoiner uses java.util.concurrent.locks.ReentrantLock to protect simultaneous access |
8 | * to input collectors. |
9 | * @author Pavel Vlasov |
10 | * |
11 | * @param <T> |
12 | * @param <C> |
13 | * @param <R> |
14 | */ |
15 | public abstract class LocalJoiner<T, C, R> extends Joiner<T, C, R> { |
16 | |
17 | Lock lock = new ReentrantLock(); |
18 | |
19 | protected LocalJoiner( |
20 | Collector<T>[] inputCollectors, |
21 | Class<T> inputType, |
22 | boolean outerJoin) { |
23 | super(inputCollectors, inputType, outerJoin); |
24 | } |
25 | |
26 | @Override |
27 | protected void startJoin() { |
28 | lock.lock(); |
29 | } |
30 | |
31 | @Override |
32 | protected void endJoin() { |
33 | lock.unlock(); |
34 | } |
35 | |
36 | } |