Java-无法理解Java线程

时间:2019-03-17 20:32:07

标签: java

我一直在使用线程,遇到了一段我很难理解的代码,我一直在尝试在google上搜索,但没有任何东西能让我真正理解它。这是代码。因此,对我来说,最难理解的部分是两行。它的索引=(索引+1)%messages.length;和SwingUtilities.invokeLater(new Write(messages [index]));。有人可以解释何时,为什么使用swingutilites以及index =(index + 1)%消息的含义。 Btw消息是一个字符串数组

public void run() {
  while( argumentsOK && !interrupted()) {
    // UI-tråden ska användas
    SwingUtilities.invokeLater( new Write(messages[index]) );
    index = (index + 1) % messages.length;
    try {
      Thread.sleep(pause);
    } catch(InterruptedException e) {
      break;
    }
  }
}

1 个答案:

答案 0 :(得分:0)

由于您没有提供所有涉及的代码,包括消息的定义,因此很难确定这里到底发生了什么。但是,我将尽力回答您的两个问题:

SwingUtilities.invokeLater()是在多线程应用程序中编写Swing GUI时使用的方法。某些事物(如引起绘图的大多数事物)必须发生在Swing应用程序的主调度线程中。当在调度线程之外的另一个线程中运行的代码想要执行只能在调度线程中完成的操作时,将使用invokeLater()。它对Swing来说是“尽可能在调度线程中运行此代码”。

'messages'和'%messages.length'发生了什么,似乎是某种环形缓冲区,在列表中保存了很多消息,当到达列表末尾时,处理从列表的开头重新开始。