2

我试图实现一个实时执行的应用程序,其中一个线程是启动器,它将调用播放一些音乐(即在重写方法中java midi实现的执行语句)。run()Runnable interface

但是线程启动(thread.start()方法)本身花费了超过 2 毫秒,这在应用程序的执行中造成了显着的延迟。我使用线程是因为有时必须在两者之间重新启动播放器应用程序。

有什么方法可以减少方法的执行时间start()。我也尝试过赋予线程优先级,但它仍然没有用。我希望延迟只有几微秒。任何帮助将不胜感激。我正在使用一个java fxml application按钮单击事件正在处理所有这些。

这是我的代码:

@FXML
private static NotesPlayer playerObj=new NotesPlayer();
@FXML
private void handlePlayButtonAction(ActionEvent event) {
    System.out.println("BUTTON CLICKED ");
    NotesPlayer.onclick=System.nanoTime();
    playerObj.play();
}

NotesPlayer Class

`public class NotesPlayer implements Runnable 
{   
protected  Thread t=null;
protected static long onclick;
private static long b4start;
private static long afterstart;


public void run()
{

    afterstart=System.nanoTime();
    System.out.println("THREAD STARTING duration: "+((double)(afterstart-b4start))/1000000+" Milli sec");          
    System.out.println("Total time : "+((double)(afterstart-onclick))/1000000 +" milli sec");



}
public void play()
{

       if(t==null)
       {
           t = new Thread (this);
           t.setPriority(1);
       }
       else
       {
           try {
               t.interrupt();
               t = new Thread (this);
               t.setPriority(1);

           } catch (Exception ex) {
               Logger.getLogger(NotesPlayer.class.getName()).log(Level.SEVERE, null, ex);
           }
       }
       b4start=System.nanoTime();
       t.start();


}} 

输出:

BUTTON CLICKED
THREAD STARTING duration: 3.89165 Milli sec
Total time : 4.4235 Milli sec
4

0 回答 0