![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Gast
Beiträge: n/a
|
Hi. Habe ein ich glaub kleines Problem aber ich kann dieses Problem nicht beheben. Ich hab nen Mp3Player mit ner Benutzeroberfläche gebastelt (javazoom layer oder so ähnlich). Nur leider klappt der Thread nicht ganz.. Kann mir mal jemand bitte helfen? Also mein code sieht nun wie folgt aus: Code: Java Code:
hier ein Ausschnitt der aktuellen GUI (mit main methode Code: Java Code:
Es gibt keinen Fehler, keine Exceptions, gar nix.... der Thread läßt einfach nur den Mp3-Player nicht nebenbei laufen... ich kann halt so bald ich auf play gedrückt habe nichts anderes mehr mit der GUI machen! |
|
| | Nach oben #2 |
| Gast
Beiträge: n/a
|
Generell funktioniert Dein Aufruf für Threads schon, wie folgendes Beispiel (ohne MP3-Player) zeigt: Java Code:
Ich sehe jedoch auf Anhieb ein Problem: Du hast zwei Mp3 Player gestartet: Einen im Hauptthread und einem im angelegten Thread. Du solltest den MP3 Player im Hauptthread auf jeden Fall entfernen. P.S. Dieser Beitrag hat hier eigentlich nix verloren, sondern gehört z.B. in das "Anfänger Forum". |
|
| | Nach oben #3 |
| Gast
Beiträge: n/a
|
Dnake du bist der beste das hat geholfen. ich hab einfach nicht gemerkt, dass ich 2 instanzen vom mp3-player gemacht habe. wirklich dummer fehler.. danke noch mal Aber da tut sich noch ein Problem auf.... Wenn ich auf den play button drücke und danach auf den stop button drücke und dann noch mal auf den play button drücke gibt das programm folgende Exception aus und macht nix: Exception in thread "AWT-EventQueue-0" java.lang.IllegalThreadStateException at java.lang.Thread.start(Unknown Source) at View.actionPerformed(View.java:211) at javax.swing.AbstractButton.fireActionPerformed(Unk nown Source) at javax.swing.AbstractButton$Handler.actionPerformed (Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed (Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent( Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(U nknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unkno wn Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForHierar chy(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarch y(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) |
|
| | Nach oben #4 |
| Gast
Beiträge: n/a
|
Jetzt bin ich extrem aufs Raten angewiesen. Mein erster Tipp wäre, dass der Start-Button dazu führt, dass ein neuer Mp3Player installiert wird und zwar als eigener Thread während der Stop-Button den Player nicht wirklich löscht. Allerdings ist das mal ganz ins Blaue hinein geraten. Alternativ könnte es sein, dass Du die Eingaben für die Oberfläche über zwei verschiedene Threads eingibst und das funktioniert praktisch nie. Man sollte die Oberfläche nur über einen Thread bedienen und die von anderen Threads generierten Eingaben auf diesen ersten Thread umlenken. Ansonsten fehlen mir die Sourcen, um den Fehler besser einkreisen zu können. Viel Erfolg beim Suchen! |
|
| | Nach oben #5 |
| Gast
Beiträge: n/a
|
Der zeigt mir immer den Fehler beim starten des Threads. also bei t.start()... ich weiss aber immer noch was ich da falsch mach... muss ein thread auch beendet werden oder kann der einfach so lange laufen bis das programm beendet wird? Wie beende ich den thread...indem ich den zerstöre mit destroy() oder soll ich den nur unterbrechen mit interrupt() ?? So langsam weiss ich nicht mehr weiter soll ich dir mal den quellcode bereitstellen ? MfG Eddi |
|
| | Nach oben #6 |
| Gast
Beiträge: n/a
|
Ein Thread wird automatisch beendet, wenn die Methode run() beendet wird, also liegt das Problem vermutlich nicht da dran. Schick mir mal den kompletten Quellcode per Mail und zwar inkl. dem Mp3Player bzw. schick den Link, wo der Player herkommt. So verstopfen wir hier nicht das Forum |
|
| | Nach oben #7 |
| Gast
Beiträge: n/a
|
... Fehler gefunden. Das Problem ist, das ein Thread nur einmal benutzt werden kann und dann neu angelegt werden muß. Im eigentlichen Code war das nicht passiert, sondern der Thread wurde nur einmal angelegt. Der Fehler tritt dann beim zweiten Start auf und löst die Exception aus. Seit Java 5 gibt es die Klasse "java.util.concurrent.ThreadPoolExecutor", die mehrere Threads halten und "füttern" kann. Das spart Ressourcen, weil die Threads offen bleiben. In dem Fall werden aber nicht so viele Threads benutzt, so dass das nicht notwendig ist. |
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Thread mehrfach starten | jack77 | Desktop-Applikationen und Grafik | 18 | 07.03.2007 17:44 |
| Problem bei der Einbindung eines Applets in HTML | exoskelett | Desktop-Applikationen und Grafik | 13 | 24.01.2006 18:45 |
| Thread implementierungs Problem | materthron | Allgemeine Java-Programmierung | 2 | 19.08.2005 02:21 |
| OSX + Eclipse 3.1 Problem | bacarni | Eclipse | 3 | 29.07.2005 21:19 |
| Thread problem | JoeBloggs | Allgemeine Java-Programmierung | 2 | 23.11.2004 09:36 |