You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Andrew Wilson <an...@db.com> on 2008/09/12 17:41:47 UTC
Threading bug in Commons Lang?
Hiya,
I've been tracking down a bug, which may be a usage issue, but seems like
a bug in HashCodeBuilder.reflectionHashCode
If you run the code below with 1 thread it runs fine. However, if you run
it with (say) 100 you start getting lots of "Ow!".
Any thoughts, many thanks,
Andrew.
Try the following code :
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
public class MyTest implements Runnable {
private MyTest() {
for(int i=0;i<100;i++) {
new Thread(this).start();
}
}
public static void main(String[] args) {
new MyTest();
}
public void run() {
for(int i=0;i<100000;i++) {
if(new MyClass1("aaa").hashCode() != new
MyClass1("aaa").hashCode()) {
System.out.println("Ow ! ");
}
}
}
private static class MyClass1 {
private MyClass2 myClass2;
public MyClass1(String arg) {
myClass2 = new MyClass2(arg);
}
public boolean equals(Object o) {
return EqualsBuilder.reflectionEquals(o, this);
}
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
}
public static class MyClass2 {
public String arg;
public MyClass2(String arg) {
this.arg = arg;
}
public boolean equals(Object o) {
return EqualsBuilder.reflectionEquals(o, this);
}
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
}
}
---
This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and delete this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
Please refer to http://www.db.com/en/content/eu_disclosures.htm for additional EU corporate and regulatory disclosures.