diferencia entre hilo y controlador

¿Alguien puede decirme la deferencia entre Thread y Handler? ¿Cuándo usamos Thread y cuando usamos Handler?

Tengo dos códigos en mi proyecto, pero no puedo entenderlos.

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

Y

private class readThread extends Thread
{
    Handler mHandler;

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

    }

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

Y en otro método, llame al controlador de esta manera

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

¿Cuál corre primero? ¿Alguien me puede explicar?

Respuestas a la pregunta(3)

Su respuesta a la pregunta