File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Beginning Java and the fly likes Threading basics problem Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Threading basics problem" Watch "Threading basics problem" New topic

Threading basics problem

Kasun Liyanage

Joined: Mar 09, 2011
Posts: 23


Below i've tried to create a basic java audio player- When the user selects an audio file by clicking the button that file begins to play. But then i realized that javazoom's play() method hangs the app while playing the file so i need to put that in a new thread. So i tried to implement Runnable like this: but that gives me the error: . What i need to do here?

Henry Wong

Joined: Sep 28, 2004
Posts: 20525

Kasun Liyanage wrote:What i need to do here?

Runnable is *not* a marker interface -- it has a method. If you declare that something implements Runnable, you will actually have to implement the method of the Runnable interface.


Books: Java Threads, 3rd Edition, Jini in a Nutshell, and Java Gems (contributor)
Tom Reilly

Joined: Jun 01, 2010
Posts: 618
As Sheriff Wong said, if your JavaMusicPlayerBasic class implements Runnable then it has to have a method called run(), which it does not.

But I don't think you should have your JavaMusicPlayerBasic class implementing Runnable. Correct me if I'm wrong but I don't think you want the whole dialog box running in a separate thread, you just want to play the mp3 in a separate thread so that your dialog box still responds to user input.

I would create a separate class that implements Runnable. Call it, for example, Mp3Player. Then in your jButton_browseActionPerformed() method, instead of creating an instance of Player, you would create an instance of Mp3Player and call its start() method. Calling start() creates a new thread and calls the run() method on that new thread. Move the creation of Player and the play() method from jButton_browseActionPerformed() to the run() method of Mp3Player so that the mp3 file is played on the new thread.
Kasun Liyanage

Joined: Mar 09, 2011
Posts: 23

Thanks guys! Tom, that was the type of explanation i needed, thanks. I'll give feedback after trying that.
Kasun Liyanage

Joined: Mar 09, 2011
Posts: 23

It's working! Thanks again, Tom.
I agree. Here's the link:
subject: Threading basics problem
jQuery in Action, 3rd edition