It isn't double checked locking because the test is within the sync block, not outside it.  That wiki link suggests the obvious that you have a performance hit getting the lock every time, but something I wasn't aware of is that a specific coding pattern and the use of volatile on J2SE 1.5+ can allow checking outside the sync block. If I employ their suggested approach (and comment the heck out of it so no one modifies it) then I supposedly can test outside the sync block.  Thanks for pointing out that link.

Alternately, I'd rather do this computation at class init time but I didn't know how to find the file without the PortletRequest.  If you know of another way to find it on the file system, I'd rather do this computation during class init time.