[concurrency-interest] do constructors ever involve threading under the covers?

Zhong Yu zhong.j.yu at gmail.com
Wed Oct 3 13:32:00 EDT 2012


We may say `final` is stronger than `volatile`, it has all the
semantics of `volatile', and more.

`volatile` is not strong enough to build thread-safe immutable
objects, `final` is.

On Wed, Oct 3, 2012 at 8:24 AM, Andy Nuss <andrew_nuss at yahoo.com> wrote:
> Hi,
>
> I have a class with a single member, a reference to a new MessageDigest
> obtained in the constructor based on the algorithm name passed to the
> constructor.  The constructor also has a Reader argument and reads all the
> data from the Reader thru an OutputStreamWriter("UTF-8) and passes thru to
> the digest with my own OutputStream filter.  The call to the constructor
> then accesses the MessageDigest member and calls digest() to get the
> resulting byte[].  My code by all appearances is single threaded, but I am
> having strange bugs that on one particular machine running vmware, the
> digest result I am getting (for password hashing) appears not to be
> repeatable.
>
> Basically, I am wondering if another thread can execute the body of the
> constructor (or in the construction and use of the OutputStreamWriter,
> within my constructor) that could be causing a bug where memory written by
> the MessageDigest.update() function (triggered within the constructor by
> writing thru OutputStreamWriter) is not seen in the call to digest() on the
> newly created MessageDigest member after the constructor returns.
>
> Andy
>
> _______________________________________________
> Concurrency-interest mailing list
> Concurrency-interest at cs.oswego.edu
> http://cs.oswego.edu/mailman/listinfo/concurrency-interest
>


More information about the Concurrency-interest mailing list