There's no thread synchronization here, so table could be null on this line but the thread scheduler decides to switch the current thread to the threadLoadData method's thread, loading all the data, followed by the subsequent line (line 57) loading the data again. I think the easiest way to prevent that is to simplify the class to just always load the data.

I believe the intent is to avoid slowing down the tests, but I think for the most part the tests should be avoiding TestUtils anyway. It also won't slow it down much since the actual loading is threaded, and anything that call getGeoData has to wait in any case if the data's not loaded.