簡體   English   中英

Java-麻煩理解java線程

[英]Java- Trouble understanding java threads

我一直在使用線程,我發現了一段很難讓我理解的代碼,我一直試圖在谷歌上搜索,但卻沒有想出能讓我理解它的任何東西。 這是代碼。 因此,對我而言難以理解的是兩條線。 它的索引=(索引+ 1)%messages.length; 和SwingUtilities.invokeLater(new Write(messages [index]));. 有人可以解釋使用swingutilites的時間和原因以及index =(index + 1)%message的含義。 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;
    }
  }
}

由於您沒有提供所有涉及的代碼,包括消息的定義,因此很難確定這里發生了什么。 但我會嘗試用我能看到的內容回答你的兩個問題:

SwingUtilities.invokeLater()是在多線程應用程序中編寫Swing GUI時使用的方法。 某些事情,例如導致繪圖的大多數事情,都必須發生在Swing應用程序的主調度線程中。 當在調度線程之外的另一個線程中運行的代碼想要執行只能在調度線程中完成的操作時,將使用invokeLater()。 它告訴Swing“你可以在調度線程中運行這段代碼”。

'messages'和'%messages.length'發生了什么,似乎是某種環形緩沖區,在列表中保存了很多消息,當到達列表末尾的處理時,處理將在列表的開頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM