No, they are not the same. I would say that using join () in this context is not good programming practice - why use Threads otherwise? You essentially turn an asynchronous operation into a synchronous one.
Observer , UI, , , GUI (, , SwingWorker - , ).
user7094