why are you mixing execute/start? Why are you allocating on the heap when you only want a local instance?

I believe the problem is that you are using execute, which is a static method, therefore the finished state required for 'waitForFinished' is not modified.