I think there are several problems here, but the bottom like is: be upfront
about sharing data, hidden shared data may not give the user the tool they
expect.<p/>

In the following:
<pre>
public Integer get_bigdata() {
        if (_static_bigdata == null) {
            log("alloc");  // from ant Task class
            _static_bigdata = new Integer(0);
        }
        return _static_bigdata;
    }
</pre>

You have unsynchronized lazy init, the "if" block should be synchronized.
(Or use
<pre>
static {
_static_bigdata = new Integer(0);
};
</pre>
for load time init).

That may not solve your problem, but static lazy init blocks should be lock
protected.
<p/>
On your other question, yes if the class is reloaded; the static
initializers will run again.  Consider placing your data into properties. 
This would also allow the user to control the shared data block.

-- 
View this message in context: 
http://ant.1045680.n5.nabble.com/How-do-I-share-data-between-custom-Ant-tasks-tp3235670p3236384.html
Sent from the Ant - Dev mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
For additional commands, e-mail: dev-h...@ant.apache.org

Reply via email to