谁能用简单的话向我解释这段代码:
SwingUtilities.invokeLater(
new Runnable(){
public void run(){
chatWindow.append(text);
}
});
}
Run Code Online (Sandbox Code Playgroud)
请任何人给我详细的解释。
您正在创建Runnable接口的匿名实现的实例, 并将其传递给invokeLater,这会将其放在队列中。另一个线程(事件调度线程)将Runnables弹出该队列并调用其run方法。(请注意,这确实是一个简单的解释,与现实情况并不完全一致。)
就您作为程序员感兴趣的效果而言,这使得下面的代码行如下:
chatWindow.append(text);
Run Code Online (Sandbox Code Playgroud)
不是在当前线程上执行,而是在事件调度线程(EDT)上执行。如果尝试在当前线程上执行它,则将导致未定义的行为,因为Swing不是线程安全的,并且所有GUI操作都必须在提到的EDT上进行。
| 归档时间: |
|
| 查看次数: |
6161 次 |
| 最近记录: |