Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SwingUtilities.isEventDispatchThread()是否线程安全?_Java_Swing_Thread Safety_Event Dispatch Thread - Fatal编程技术网

Java SwingUtilities.isEventDispatchThread()是否线程安全?

Java SwingUtilities.isEventDispatchThread()是否线程安全?,java,swing,thread-safety,event-dispatch-thread,Java,Swing,Thread Safety,Event Dispatch Thread,报价表 一些Swing组件方法在API规范中被标记为“线程安全”;这些可以从任何线程安全地调用。必须从事件分派线程调用所有其他Swing组件方法 在同一页的下面几行 如果需要确定代码是否在事件调度线程上运行,请调用javax.swing.SwingUtilities.isEventDispatchThread 因此,像SwingUtilities.invokeLater这样的线程安全方法用如下文本“标记”: 与Swing的其余部分不同,此方法可以从任何线程调用 但是SwingUtilities.

报价表

一些Swing组件方法在API规范中被标记为“线程安全”;这些可以从任何线程安全地调用。必须从事件分派线程调用所有其他Swing组件方法

在同一页的下面几行

如果需要确定代码是否在事件调度线程上运行,请调用
javax.swing.SwingUtilities.isEventDispatchThread

因此,像
SwingUtilities.invokeLater
这样的线程安全方法用如下文本“标记”:

与Swing的其余部分不同,此方法可以从任何线程调用

但是
SwingUtilities.isEventDispatchThread()
的API文档没有将其“标记”为线程安全

如果当前线程是AWT事件调度线程,则返回true

这意味着我只能在事件调度线程上调用它。但是这没有任何意义,所以我非常确定这个方法是线程安全的

对吧?


web上对此有任何确认吗?

true/false作为isEventDispatchThread notify返回,关于EDT是否处于活动状态(返回为true),否则(EDT队列为空加上一些超时)返回false,我认为API中不需要一些线程安全性,只是关于状态的通知器No,这并不意味着你“只能在事件发送线程上调用它”。你从哪里得到这个主意的?如果是,则返回true,否则返回false。dispatcher线程是否真的可能是线程不安全的?这只是一点信息,对于一个线程来说是正确的,对于所有其他线程来说都是错误的。不完全是易失性数据。引用了另外两种查找冲突的方法。请注意,
EventQueue.isDispatchThread()
不是“Swing组件方法”。那么,问题可能是:“Swing组件方法”是什么。我假设了
javax.swing.*
包中每个类上的每个方法,包括
SwingUtilities
。否则就没有必要将
SwingUtilities.invokeLater
标记为线程安全。因此,如果
SwingUtilities
是一个“Swing组件”,那么它的
isEventDispatchThread()
方法应该标记为线程安全,如果它是线程安全的。true/false作为isEventDispatchThread的返回,通知是否EDT处于活动状态(返回为true),否则(EDT队列为空加上一些超时)返回false,我认为API中不需要一些线程安全性,只是一个关于状态的通知程序。不,这并不意味着您“只能在事件调度线程上调用它”。你从哪里得到这个主意的?如果是,则返回true,否则返回false。dispatcher线程是否真的可能是线程不安全的?这只是一点信息,对于一个线程来说是正确的,对于所有其他线程来说都是错误的。不完全是易失性数据。引用了另外两种查找冲突的方法。请注意,
EventQueue.isDispatchThread()
不是“Swing组件方法”。那么,问题可能是:“Swing组件方法”是什么。我假设了
javax.swing.*
包中每个类上的每个方法,包括
SwingUtilities
。否则就没有必要将
SwingUtilities.invokeLater
标记为线程安全。因此,如果
SwingUtilities
是一个“Swing组件”,那么它的
isEventDispatchThread()
方法如果是线程安全的,则应该标记为线程安全的。