Change your code from invoking .run()
to
t0.start();
t1.start();
t2.start();
The idea is QThread's start()
method does the necessary to setup the thread, and then it invokes your overridden run()
on the thread. If you just invoke run()
directly yourself, nothing actually creates the thread for you and you'd expect to see exactly the serial execution you're seeing.