Unterschied zwischen Thread und Handler

Kann mir jemand den Unterschied zwischen Thread und Handler erklären? Wann verwenden wir Thread und wann Handler?

Ich habe zwei Codes in meinem Projekt, aber ich kann sie nicht verstehen.

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

Un

private class readThread extends Thread
{
    Handler mHandler;

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

    }

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

Und in einer anderen Methode rufen Sie den Handler wie folgt auf

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

Welche man zuerst laufen? Kann mir jemand erklären?