Das klingt jetzt aber nach einem sehr konstruierten Fall ohne wirklich sinnvollen Hintergrund.
Was soll dir das bringen?
Zumal du einen gewaltigen Fehler machst: UI im Hintergrund manipulieren wollen.
Du darfst Interaktionen mit UI Elementen nur im MainThread oder UI Thread machen.
Was du dort tust ist Folgendes:
Du erstellst dir eine Referenz auf deinen UI Thread.
Du erstellst dir eine Runnable, die den Thread schlafen legt, nen Sound abspielt und den Thread noch mal schlafen legt.
Du startest dein Runnable verzögert auf dem UI Thread.
Dieses gesamte Konstrukt könntest du einfach einsparen und die Schleife direkt in der buttons_zeichnen() durchlaufen.
So hast du das Ganze zwar etwas verkompliziert, aber im Endeffekt nix daran geändert.
Für so etwas sind Threads vermutlich der falsche Weg.
Ein Thread sorgt dafür, dass irgendwas getan wird und dein UI nicht blockiert.
Du möchtest aber, dass dein UI blockiert.
Denn solange du die Farbe(n) deines Buttons aufleuchten lässt soll der User ja nicht herumpfuschen können.
Als erster Punkt solltest du auf jeden Fall zuerst die Buttons erstellen und anzeigen, bevor du irgend etwas Anderes tust.
Idealerweise speicherst du dir die Referenz dieser Buttons in einer List.
Im 'Random'-Bereich lässt du dir dann einfach den Button an der Position der Random-Variable ausgeben, färbst ihn ein, wartest ein bisschen, färbst ihn zurück.
(Hast du noch eine weitere Liste mit Integern kannst du dort deine Random-Variable reinpacken. Dann siehst du später auch, ob richtig geraten wurde.)
Allerdings finde ich, dass Threading da ein völlig unsinniger Ansatz ist. Du brauchst es schlicht nicht und andererseits hindert es dich offenbar auch.