我正在尝试实现一个实时执行的应用程序,其中一个线程是发起者,它将调用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