java - 如果我在非 EDT 的单个线程上处理 GUI,它仍然是线程安全的吗?

标签 java multithreading thread-safety event-dispatch-thread

如果我在不同的线程上创建 GUI,并确保 GUI 发生的任何更新仅发生在该线程上,那么它仍然是线程安全的吗?我知道这很难确保,所以在某种程度上我想问:与其他线程相比,EDT 有什么特别/不同的地方吗?

请记住,我并不是在询问这个问题的良好实践或其他解决方案,我是在问,在纯粹的技术层面上,如果您基本上像 EDT 一样对待线程,那么在新的线程上创建的 GUI 是否会出现问题?线程可以安全使用吗?

最佳答案

它不是线程安全的,因为您的进程不是唯一读取/写入 UI 元素的进程。 JRE 也可以读写,但它是通过 EDT 进行的。因此,即使您在非 EDT 的单个线程中读/写,也有一些进程在 EDT 中执行此操作 - 因此您最终会得到一个 UI 元素、几个线程、没有同步。

关于java - 如果我在非 EDT 的单个线程上处理 GUI,它仍然是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44264407/

相关文章:

java - 给定整数集的子集,其和为常量 N : Java

python - 在多线程上下文中模拟以在 Python 中进行测试

java - 将 Swing 与工作线程以外的线程连接

java - 线程通信中Notify()的使用

java - 实现从main到fragment的菜单项

java - 根据指定列动态查询

multithreading - RuntimeError : main thread is not in main loop with Matplotlib and Flask

c++ - 使用 OpenMP atomic 并行更新矩阵列

java - 是什么使得从静态初始化程序初始化对象引用以安全地发布对象?

Java - 将实体转换为 wsimport 对象