Use AtomicInteger for naming of ParameterExpressions to avoid conflicts in multithreaded usage
diff --git a/src/main/java/net/hydromatic/linq4j/expressions/ParameterExpression.java b/src/main/java/net/hydromatic/linq4j/expressions/ParameterExpression.java
index 1fe6a50..bad263b 100644
--- a/src/main/java/net/hydromatic/linq4j/expressions/ParameterExpression.java
+++ b/src/main/java/net/hydromatic/linq4j/expressions/ParameterExpression.java
@@ -19,18 +19,19 @@
import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
+import java.util.concurrent.atomic.AtomicInteger;
/**
* Represents a named parameter expression.
*/
public class ParameterExpression extends Expression {
- private static int seq = 0;
+ private static final AtomicInteger SEQ = new AtomicInteger();
public final int modifier;
public final String name;
public ParameterExpression(Type type) {
- this(0, type, "p" + seq++);
+ this(0, type, "p" + SEQ.getAndIncrement());
}
public ParameterExpression(int modifier, Type type, String name) {