Jam*_*ing 2 java swing multithreading netbeans
设置线程启动我的MIDI音序器后遇到一些麻烦我决定简单地删除它,虽然它会减慢我的UI速度,但我可以正确使用它.
然而我注意到,即使在播放Sequencer时,UI也非常活跃,即使它播放了大约500个音符,UI也能完美地运行.
现在我知道在C#中,如果你正在做一些密集的事情,建议将它加载到新的Thread上,因为它将释放UI.这是Java中的原理,它让我很困惑.如果是这样,有人可以解释UI是如何被阻止的吗?
谢谢
编辑:
以下代码实际播放序列
public static boolean Play() {
if(!_sequencer.isRunning()) {
try {
_sequencer.setSequence(_sequence);
_sequencer.start();
return true;
} catch (Exception e) {
Logger.Add(e.getMessage());
}
}
return false;
//Already running
}
Run Code Online (Sandbox Code Playgroud)
是的,这是相同的理论.只有事件线程可以修改UI,因此如果您在该线程上执行任何操作,那么您将阻止其他事件在UI上工作.
将事件线程视为队列可能更容易:
Action)如果#3需要很长时间,那么这可能意味着您的表单会显示为已锁定.显然它完全取决于你对long的定义.一般来说,最好使用Event Thread而不是它.
| 归档时间: |
|
| 查看次数: |
880 次 |
| 最近记录: |