java – 实现空while循环以保持控制的更好方法
发布时间:2020-12-15 04:18:31 所属栏目:Java 来源:网络整理
导读:我正在播放背景音频,我希望程序的控制保持静止,直到音频播放结束,因为我使用空循环,如下所示 while(isPlaying==true){};mediaPlayer.stop(); 正如您所看到的,while循环保持程序控制直到音频播放,然后执行下一条指令.这工作正常,但我发现这不是一个正确的方法
我正在播放背景音频,我希望程序的控制保持静止,直到音频播放结束,因为我使用空循环,如下所示
while(isPlaying==true){}; mediaPlayer.stop(); 正如您所看到的,while循环保持程序控制直到音频播放,然后执行下一条指令.这工作正常,但我发现这不是一个正确的方法来做空 – 虽然昂贵,我正在寻找替代方案.请帮忙. 解决方法
假设你的程序是Java(…为什么你给它三个语言标签?)你有几个选择.您可以使用适当的同步事件,例如:
// fields Object playerStopEvent = new Object(); boolean isPlaying; // in your media player,when playback is complete: synchronized (playerStopEvent) { isPlaying = false; playerStopEvent.notifyAll(); } // elsewhere,when waiting for playback to complete: synchronized (playerStopEvent) { while (isPlaying) { try { playerStopEvent.wait(); } catch (InterruptedException x) { // abort or ignore,up to you } } } mediaPlayer.stop(); 有关更多示例,请参阅Guarded Blocks的官方教程. 你也可以让mediaPlayer在完成时调用一些回调,例如在开始播放时禁用GUI组件,并在调用完成的回调时重新启用它们(您也可以在此处使用事件侦听器方法). 没有更多的信息,我推荐后者,因为它不会阻止你在播放器播放时做其他无关的事情(或者让你的程序完全不响应),但前者可能更合适,具体取决于你的情况. 如果它在C或C中,则概念是相同的.使用与第一个选项相同的条件变量/事件,或者对第二个选项使用的任何等效的回调/侦听器/信号槽. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 序列化 – 当我使用ArrayList时,如何保持GWT试图包含每个可
- 【SpringBoot】05.SpringBoot整合Listener的两种方式
- java开发_UUID(Universally Unique Identifier,全局唯一标识
- java – 如何从Json中提取值
- java – 如何在插入XML列时解决“非法转换”异常?
- 用Java在dll中创建Class的对象
- java – 如何获取Rhino中的当前脚本名称和行号?
- 不通过执行Java Applikation在ARM上加载JDBC库
- java – Integer.parseInt()不解析大的负数
- java对properties文件进行解析