java - 有没有办法设置 SwingWorker 使用的后台线程的优先级?

标签 java multithreading swing swingworker thread-priority

在 Java 中有没有办法为将调用 SwingWorker 对象的 doInBackground() 方法的线程设置优先级?

在 Thread API 中有一个 setPriority() 方法。 SwingWorker.execute() 方法安排 swingworker 在工作线程上执行。我想访问该工作线程以设置它的优先级。

根据我的理解,这个工作线程来自一个默认的工作线程池。处理这个问题的唯一方法是使用我自己的执行程序吗?

最佳答案

JDK7 SwingWorker javadoc暗示设计者不打算让用户直接与后台线程交互或更改后台线程:

...为任何特定 SwingWorker 选择线程的确切策略未指定,不应依赖。

SwingWorker.getWorkersExecutorService() 的实现似乎强化了这个想法,因为他们以一种不易更改的方式实现了它。

SwingWorker 是典型案例的样板解决方案,而您没有典型案例。我建议您编写代码来处理后台任务的运行,而不是试图破解 SwingWorker 来执行您想要的操作。这样,将来维护您的代码的任何人(甚至可能是您自己!)都不会想知道为什么 SwingWorker 的行为不如预期。

关于java - 有没有办法设置 SwingWorker 使用的后台线程的优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10177494/

相关文章:

c# - 获取线程列表

java - 如何在 JTextPane 中嵌入可调整大小的 JPanel?

java - JTable:正确显示表的刷新

java - .class文件反编译后看不到Super()

java - android中用于照明解决的位图归一化

java - StringBuffer 在线程安全程序的设计中到底是如何工作的?

ios - 核心数据操作中 100% CPU

java - 将 api 级别 android 版本从 8 更改为 12 时出错

java - 将线程安全委托(delegate)给 ConcurrentMap 和 AtomicInteger

java - 禁用单个 ALT 类型来激活菜单