Łuk*_*szG 3 java swing multithreading rendering jpanel
我在学习Java中的线程时遇到了一些问题.目标是进行模拟,向我们展示兔子在某种类型的板上如何从狼群中奔跑.每只狼和每只兔子都应该成为一个线索.所以我在Test类的main方法中创建了一个GUI,并创建了一个实现Runnable接口的新类.我认为这很容易也很合乎逻辑.但是现在,我如何AddRabbit从这些线程调用该方法?因为非常线程应该像下面这样做:
但是怎么样?
不允许直接使用多个线程更新Swing组件 - Swing不是线程安全的.它处理的是一个Swing事件队列,因此如果必须更新现有线程中的JComponent,则将使用以下代码:
//You are currently in a separate thread that's calculating your rabbit positions
SwingUtilities.invokeLater(new Runnable() {
public void run() {
//Put in code to modify your Swing elements
}
});
Run Code Online (Sandbox Code Playgroud)
因此,每当您觉得需要更新GUI时,就可以使用SwingUtilities.invokeLater方法将Runnable实例传递到Swing事件队列,该方法将在其自己的线程中处理.