如何在java中减少线程的start()方法执行时间

时间:2015-10-12 10:47:28

标签: java android multithreading midi javax.sound.midi

我正在尝试实现一个实时执行的应用程序,其中一个线程是发起者,它将调用java midi来播放一些音乐(即在run()方法的Runnable interface方法中实现的执行语句1}})。

但是线程启动(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

0 个答案:

没有答案