diferença entre Thread e Handler

Alguém pode me dizer a deferência entre Thread e Handler? Quando usamos Thread e quando usamos Handler?

Eu tenho dois códigos no meu projeto, mas não os consigo entender.

final Handler handler =  new Handler()
{
    @Override
    public void handleMessage(Message msg)
    {
        //  Do SomeThings
    } 
};

E

private class readThread extends Thread
{
    Handler mHandler;

    readThread(Handler h){
        mHandler = h;
        this.setPriority(Thread.MIN_PRIORITY);

    }

    @Override
    public void run()
    {
        //  Do SomeThings
    }
}

E em outro método, chame o manipulador como este

read_thread = new readThread(handler);
            read_thread.start();

Qual correr primeiro ?? Alguém pode me explicar?

questionAnswers(3)

yourAnswerToTheQuestion