Java Concurrency in practice sample question

Posted by andy boot on Stack Overflow See other posts from Stack Overflow or by andy boot
Published on 2010-04-12T19:06:36Z Indexed on 2010/04/12 19:13 UTC
Read the original article Hit count: 268

Filed under:
|

I am reading "Java Concurrency in practice" and looking at the example code on page 51.

According to the book this piece of code is at risk of of failure if it has not been published properly. Because I like to code examples and break them to prove how they work. I have tried to make it throw an AssertionError but have failed. (Leading me to my previous question)

Can anyone post sample code so that an AssertionError is thrown? Rule: Do not modify the Holder class.

public class Holder{
private int n;

public Holder(int n){
    this.n = n;
}

public void assertSanity(){
    if (n != n) {
        throw new AssertionError("This statement is false");
    }
}
}

I have modified the class to make it more fragile but I still can not get an AssertionError thrown.

    class Holder2{
    private int n;
    private int n2;

    public Holder2(int n) throws InterruptedException{
        this.n = n;
        Thread.sleep(200);
        this.n2 = n;
    }

    public void assertSanity(){
        if (n != n2) {
            throw new AssertionError("This statement is false");
        }
    }
    }

Is it possible to make either of the above classes throw an AssertionError? Or do we have to accept that they may occasionally do so and we can't write code to prove it?

© Stack Overflow or respective owner

Related posts about java

Related posts about concurrency