gpt4 book ai didi

java - 如果在 EDT 线程外调用 AWT 代码,如何抛出异常?

转载 作者:行者123 更新时间:2023-11-30 06:30:00 25 4
gpt4 key购买 nike

我一直在网上搜索这个,但我还没有找到答案..也许你们中有人知道这个。

我正在开发类似 swing 桌面的应用程序;因为我知道 swing 不是线程安全的(如果我在 EDT 之外的 JComponent 上调用一个方法,那么 EDT 本身总是有可能出现死锁),我希望线程抛出一个异常正在尝试调用该方法。让我更好地解释一下:

假设我有 2 个线程:EDT 和一个后台 worker (“BW”)。例如,如果我在 BW 中调用 JButton.setText()JButton.setIcon(),就有可能与 EDT 发生死锁。现在我希望当 BW 调用 JButton.setText() 并抛出异常以表明我做错了..

我看到 VS2008 上的 C# 默认执行此操作(我不知道是否有办法禁用此行为,但我认为检测错误代码非常有用)。有没有办法在java中实现类似的效果?

最佳答案

看看this article它描述了一个检查 Swing 线程违规的 RepaintManager。它不会捕获所有违规行为,但会捕获大部分违规行为。

您可以轻松地调整该类以抛出 Exception is is 只是打印堆栈跟踪

关于java - 如果在 EDT 线程外调用 AWT 代码,如何抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10939624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com