按下(小程序)按钮后,中断线程不起作用

时间:2014-11-12 19:19:56

标签: java multithreading applet interrupt

我制作了一个简单的程序让java播放一些.mp3文件。 使用JLayer来做到这一点。 问题是按下按钮后我无法中断播放器。

我的代码在actionperformed中执行:

    class MyThread extends Thread {

        @Override
        public void run() {

            try {

                File file = new File(source);
                FileInputStream fis = new FileInputStream(file);
                BufferedInputStream bis = new BufferedInputStream(fis);
                try {
                    Thread.sleep(1);
                    try {
                        Player player = new Player(bis);
                        player.play();
                    } catch (JavaLayerException ex) {
                    }
                } catch (InterruptedException e) {
                    System.out.println("Came");
                }

            } catch (IOException e) {
                lab2.setText("error, is the pathway correct?");
            }

        }
    }

    MyThread mythread = new MyThread();

    if (event.getSource() == input) {
        source = input.getText();
        source = source.replace("\\", "\\\\");
        lab1.setText(source);
    }

    if (event.getSource() == but1) {

        mythread.start();

    }

    if (event.getSource() == but2) {
        but2.setLabel("stop");
        mythread.interrupt();
        but2.setLabel("stopped");
    }
}

}

当我添加mythread.interrupt();直接在中断工作后面,我的系统给了我"来了"输出。 但是,如果我使用名为输入的按钮,它将不起作用。

1 个答案:

答案 0 :(得分:0)

似乎玩家类没有停止方法,但您可以尝试使用高级播放器:

http://www.javazoom.net/javalayer/docs/docs1.0/javazoom/jl/player/advanced/AdvancedPlayer.html

stop()方法。