问题标签 [edt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
35 浏览

java - 修改 EDT 中的变量

当我设置数字 [0] = 10 时,我的循环没有停止,while 循环的线程看不到按下 jbutton 时正在更改的数字,我该如何解决这个问题?我相信线程被阻塞了。

0 投票
2 回答
9384 浏览

python - scipy distance_transform_edt 函数是如何工作的?

https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.ndimage.morphology.distance_transform_edt.html

我无法理解欧几里德距离变换函数在 Scipy 中的工作原理。据我了解,它与 Matlab 函数(bwdist)不同。例如,对于输入:

scipy.ndimage.distance_transform_edt 函数返回相同的数组:

但是 matlab 函数返回这个:

这更有意义,因为它将“距离”返回到最近的距离。

0 投票
2 回答
57 浏览

java - 从 EDT (EventQueue) 停止另一个线程

所以我创建了一个带有停止按钮的基本摆动界面,单击它应该停止计数线程。当应用程序启动时,线程实例将分配一个runnable执行计数循环的类并将其记录在控制台中。接口中有一个方法runnable将 volatile 变量设置为 false 应该基本上停止线程,我在停止按钮上调用它,但为什么它不停止循环?这是我的代码。

父容器.java

CountRunnable.java

0 投票
0 回答
117 浏览

java - Java 创建Button actionListener的最有效方法?

我正在从事一个涉及 GUI 的项目。在 JFrame 上,我有几个在单击时执行特定操作的 JButton。现在的问题是,使用我编写的代码,每次单击按钮时,它们都会生成一个新线程。我这样做是因为我了解到如果所有事情都发生在同一个线程上,JFrame 会冻结,但我觉得创建这么多线程效率不高。虽然程序现在运行得很好,但我仍然希望从程序中删除多余的部分。应该把所有的 GUI 东西放在“InvokeLater”中吗?但是 jButtons 不是也在 GUI 中吗?这些 Button 执行的某些操作需要现有的 GUI,因此很难将它们分开......有什么想法吗?这是按钮的示例。

0 投票
0 回答
67 浏览

java - 亚马逊 API 请求:错误 503 尽管有一些延迟

我正在使用亚马逊帐户访问亚马逊图书的数据库。我的帐户仅用于此目的,我不使用它出售任何东西。尽管彼此之间有 2 秒的延迟,但我无法连续 5 次访问亚马逊 API:我收到 503 错误。

这是我的测试代码:

这里有一些解释:

  • 给 searchISBN() 的参数是 ISBN 代码,但是对于 azerty 键盘,数字会在同一键中转换为相应的字符。无论如何,这部分工作,没有问题。认为它是常规 ISBN 代码(“978xxxxxxxxxx”)
  • execute() 方法来自 assertJ Swing 测试框架,该语句在 EDT 中运行其 lambda 参数。运行测试时,我观察到 2 秒延迟,但我不确定这是让系统等待的正确说法
  • verify 语句来自 mockito,它验证注定将请求发送到亚马逊的内部方法被调用 5 次,并且只有 5 次:没有隐藏的调用可以证明 503 错误是合理的......

顺便说一句,正如我在 SO 某处看到的那样,503 错误是由亚马逊发送的,以防请求太快,而我的测试似乎并非如此。

谢谢你

0 投票
1 回答
176 浏览

java - EDT 和 SwingWorker 线程 - 发布和处理

EDT 和 SwingWorker 的概念有点令人困惑。我现在已经检查了几次方法定义并编写了一些示例程序。

以下是我目前的情况,

1)我使用以下方法从主要方法启动了一个 GUI 窗口,

2) StartMainWindow 是一个 SWT 窗口,主要代码是一个“运行”按钮。单击运行按钮时,需要执行一组特定的 DB 操作,这些操作位于 DBOperations 类的 doInBackground() 方法中。这个类扩展了 SwingWorker。

3) 我删除了所有 DBOperations 代码并放入了一些示例代码,以便于理解。在 DBOperations 中,下面是代码,

当我运行我的代码时,它会启动一个窗口并打印“Entered”。

关闭窗口后,它会打印我使用发布发送的任何内容。所以实际的事件顺序如下,

在使用发布时,它应该立即打印到标准输出。任何解释为什么会发生这种情况以及修复建议?

0 投票
1 回答
624 浏览

postgresql - 如何查找当前时区 EST 或 EDT

Postgresql ... 如何找到当前时区 EST 或 EDT,我正在做但是期待所有时区的简单解决方案。,

确切要求:如果我将 ET 作为本地时区,我需要当前时区和日光。

以下是我为此目的使用的功能:

以下是用法

0 投票
1 回答
77 浏览

java - 添加其他项目时无法从另一个线程更新 JProgressBar 的值

在向 JPanel 添加另一个组件时,我在显示当前状态(在 JProgressBar 中)时遇到问题。

这个操作很繁重,大约需要 2 秒,20 次迭代(添加 20 个项目)。但它可以是 100 个项目。

所以我需要实现在JProgressBar中显示每次迭代的当前状态,但我不知道怎么做。(在我的代码中它是 value perc

你能解释一下 EDT 的工作原理吗?是否将事件添加到队列中到最后?谢谢!

我的 JProgressBar 对象:categoryStatus

这是我的代码:

0 投票
2 回答
414 浏览

java - SwingWorker 没有从进程内部更新进度条

我有一个 Java 8 Swing 应用程序,当用户单击一个新按钮时,需要向它添加一个耗时的操作。我认为这是一个完美的用例,SwingWorker尽管我以前从未写过。完整的源代码和可重现的 Swing 应用程序在这里

当用户点击一个按钮时,应用程序必须从几个不同的来源收集信息,然后开始这个后台操作。它将计算一个InputAnalysis,然后将其InputAnalysis返回到 EDT 中的单击处理程序以更新 UI。虽然它有效,但我希望它也能更新JProgressBar,以便用户看到正在取得的进展。迄今为止我最好的尝试:

当我注释掉try-catch包含我的analysisService_analyze()调用的块,并取消注释 my 的代码时MegaWorker,进度条仍然没有正确更新。

不是必需的,因为上面提供了SSCCE的所有必要代码,但是如果您有兴趣快速构建和运行此代码,我已经在 GitHub 上准备了这个SimpleApp存储库以节省您一些时间。但不是回答这个问题所必需的,上面提供了所有代码。100%。

0 投票
1 回答
233 浏览

java - 在 EDT 中运行时显示 JFreeChart 点的性能问题

背景:

众所周知的 Swing 最佳实践要求是与 Swing 框架交互的代码也必须在 EDT(事件调度线程)中执行。

因此,我更改了代码以使基于 JFreeChart 的更新在 EDT 中运行。但是,在“正常”线程上通常需要大约 7 分钟才能完成的完整图表显示任务,在 EDT 中运行时变成了几个小时的任务!


我究竟做错了什么?我误解了 Swing 并发课程吗?我真的必须org.jfree.data.time.TimeSeries.addOrUpdate(date, double)在 EDT 内跑步吗?

请指教!


细节:

单击 Swing GUI 按钮,我的程序会触发一项耗时的任务。基本上,它读取带有对值(日期、双精度)的(大)文件,然后使用 JFreeChart 框架显示它们。

因为这是一项耗时的任务,在读取和显示数据时,aJProgreessBar在前台向用户显示进度状态,而在后台更新图表(用户仍然可以直观地看到每个图表更新,在进度条后面)。

这工作得很好,直到我决定查看代码以更新我的图表数据并在 Swing EDT 中显示。然后,一个通常需要7分钟左右完成的任务,开始需要几个小时才能完成!


这是我正在使用的线程列表:

1) 由于任务是由 Swing Button Listener 触发的,因此它在 EDT 中运行。JProgressBar也在同一个线程中运行;

2) 在显示 时JProgressBar,会创建第二个(“正常”)线程并在后台执行。这是完成繁重工作的地方。

它包括JProgressBar另一个线程上状态的更新(通过调用JProgressBar.setvalue())和我的JFreeChart图表的更新(通过调用TimeSeries.addOrUpdate(date, double),它会自动更新 a org.jfree.chart.ChartPanel)。

在我的第二个(“正常”)线程中更新图表通常需要大约 7 分钟才能完成。没有任何明显的问题。


然而,知道大多数 Swing 对象方法都不是“线程安全的”并且 ChartPanel只是用于显示JFreeChart对象的 Swing GUI 组件,我决定TimeSeries.addOrUpdate(date, double)在 EDT 中运行我的图表更新代码。

仍在我的第二个“正常”线程中运行,我使用以下异步代码进行了测试:

但我意识到我的 JProgressBar 在图表更新之前会达到 100%。我想这是意料之中的,因为显示图表数据比获取和处理数据要慢得多。

然后我尝试了以下同步代码:

这就是我发现性能问题的地方:现在一个完整的任务过去需要大约 7 分钟才能完成,现在开始需要几个小时才能完成!


所以,我的问题是:

我究竟做错了什么?我误解了 Swing 并发课程吗?我真的必须在 EDT 内运行 TimeSeries.addOrUpdate(date, double) 吗?

请指教!


更新:
完整代码太大,无法在此处显示,但您可以在下面找到代码快照。
也许,该代码唯一值得注意的是我使用了反射。这是因为我使用了一个通用的 ProgressBar 类,它在后台调用我将它作为参数发送的任何类(尽管这在下面的快照中没有清楚地显示)。