The only reason you are storing the pointer to conjurer is to share it with the conjureThread.  You could just as easily build the conjurer here and share it with the thread here.

Also, the conjureThread isn't actually guaranteed to see the conjurer that you are building here.  The memory semantics are such that it is entirely possible that it throws a NullPointerException because the conjurer is not volatile and thus is not guaranteed to be visible by all cores on a multi-core machine.