我对了解摇摆和 EDT 的探索再次继续……
由于 EDT 是唯一的 EDT,我现在想知道哪些方法、构造函数和任何其他东西应该在 EDT 中完成。我知道一般规则,几乎所有创建或与 Swing 组件交互的代码都必须在事件调度线程上运行,但这是非常普遍的。也有人说任何非线程安全的摇摆代码都应该在 EDT 上执行。但我仍然无法分辨哪些方法是线程安全的,哪些不是。
我的问题是,是否有最终将在 EDT 上排队的命令列表?(我这么说是因为您不必从 EDT 调用 repaint(),但它会在它上面执行,而且永远不会少)。
如果我知道我的方法将在哪里执行(并且我可以估计相对于其余代码的时间),我可以编写更有效和更易于理解的代码。
到目前为止,我的大部分 EDT 工作都是在黑暗中进行的,因此编写了错误的代码,然后,当我无法弄清楚时,通常会惹恼这里的人。
那么是否有一个列表,也许是我错过的 Javadocs 中的某些内容?也许一些更具体的规则(例如,如果方法的名称中有一个“e”,它必须在特定的 EDT 类型上执行)?