我在互联网上阅读了许多关于何时应该在 EDT 中运行以及何时不应该运行的文章。但是我仍然不确定我是否理解,所以我想问几个问题:
默认情况下,哪些代码将在 EDT内运行?
哪些代码将在 EDT之外默认运行?
我什么时候应该使用 InvokeLater() 这样默认情况下会在 EDT 外部运行的东西会在其中运行?
我什么时候应该通过创建一个新线程并将该代码放入其中来阻止一段代码(默认情况下)在 EDT 内运行?
谢谢
我在互联网上阅读了许多关于何时应该在 EDT 中运行以及何时不应该运行的文章。但是我仍然不确定我是否理解,所以我想问几个问题:
默认情况下,哪些代码将在 EDT内运行?
哪些代码将在 EDT之外默认运行?
我什么时候应该使用 InvokeLater() 这样默认情况下会在 EDT 外部运行的东西会在其中运行?
我什么时候应该通过创建一个新线程并将该代码放入其中来阻止一段代码(默认情况下)在 EDT 内运行?
谢谢
首先非常感谢您很好地编辑和格式化您的问题。回答你的问题时有很大帮助。
另外我必须承认我不是 100% 确定我的答案,所以伙计们:如果我错了,请随时纠正我。
改变你的图形用户界面的一切。
不太确定。
如果您需要使用时间密集型计算来更新您的 gui。例如,如果您想在 JLabel 中显示从 0 到 100000000 的数字。
所有会阻止您的 gui 与用户交互的东西,因为这需要大量时间,例如一些具有大量数据集的计算。但是您需要确保仅从一个线程访问值或将线程与volatile
和同步
synchronize
。 .