我刚认识到每次播放MP3时我的程序都会创建一个Daemon Thread
。并且它们被命名为“Timer-XX
”,因为每个人都建议是的,XX是从0开始的递增整数。
好的,我可以理解JFX
需要他们播放MP3,但实际上MP3只有3秒钟,其中一些会保留Running
几分钟或更长时间,而其他人则正常运行out(我只是建议它应该是这样的。)
我想知道为什么他们首先被创造出来?为什么他们留下Running
以及我如何能够驾驭它们因为据我所知Daemon
并不意味着停止所以它仍然会占用内存和CPU,而我现在无法像糖果那样放弃我的项目状态。
以下是播放MP3的代码:
public class EffectPlayer {
private final String MP3_SUFFIX = ".mp3";
private final static int MAX_VOLUME = 100;
private MediaPlayer mediaPlayer;
private int masterVolume = 50;
private int effectVolume = 50;
public EffectPlayer(File f){
if(isMP3(f)){
Media mp3 = new Media(f.toURI().toString());
mediaPlayer = new MediaPlayer(mp3);
effectVolume = Integer.parseInt(GetConfig.getVar("USER_OPTION_VOLUME_EFFECT"));
masterVolume = Integer.parseInt(GetConfig.getVar("USER_OPTION_VOLUME_MASTER"));
if(effectVolume > masterVolume) effectVolume = masterVolume;
mediaPlayer.setVolume(1 - (float)(Math.log(MAX_VOLUME - effectVolume) / Math.log(MAX_VOLUME)));
mediaPlayer.setCycleCount(1);
mediaPlayer.play();
}
}
private boolean isMP3(File f) {
return f.getName().toLowerCase().endsWith(MP3_SUFFIX);
}
}
JFX Panel在创建EffectPlayer对象的类中创建
@SuppressWarnings("unused")
public static JFXPanel fxPanel = new JFXPanel();