Hallo Leute, ich brauche Hilfe.
Ich schreibe einen Musikplayer, der Musik aus dem Internet streamt. Wenn ich die Play-Taste drücken, bevor die Musik fertig gepuffert ist, möchte ich warten.
Ich habe versucht, so etwas zu tun:
%Vor%Das Problem ist, dass der playButton nicht gedrückt wird, wenn% "co_de%" geworfen wird. Wie löst man normalerweise solche Probleme?
BEARBEITEN Um klarzustellen. Meine Frage ist: Wie mache ich den Button warten auf die "startStreaming" -Methode zu beenden?
Laut JavaDoc
IllegalMonitorStateException wird ausgelöst "um anzuzeigen, dass ein Thread hat versucht auf das Objekt zu warten überwachen oder andere Threads benachrichtigen Warten auf dem Monitor eines Objekts ohne Besitzer des angegebenen Monitors. "
Um mutex.wait()
oder mutex.notify()
aufzurufen, muss der aufrufende Thread eine Sperre für den Objekt-Mutex besitzen.
Diese Ausnahme wird ausgelöst, wenn Sie sie ohne vorangestelltes synchronized (mutex) { }
Sehen Sie sich die nette Animation von wait
und notify
in diesem Link an: Wie warten und benachrichtigen wirklich arbeiten?
für wait (), notify () call, Sie benötigen einen synchronisierten Code. versuche das:
%Vor%Probieren Sie Semaphore mit 0 Anfangsgenehmigung aus . Semaphor mutex = neuer Semaphor (0);
in main mutex.release();
Klicken Sie auf mutex.acquire();
von Javadoc warte Diese Methode sollte nur von einem Thread aufgerufen werden, der der Besitzer des Monitors dieses Objekts ist und für benachrichtigen Diese Methode sollte nur von einem Thread aufgerufen werden, der der Besitzer des Monitors dieses Objekts ist.
Das bedeutet, dass Sie mit dem Mutex synchronisieren müssen, wenn Sie notify verwenden und warten
Tags und Links java multithreading wait mutex notify