在 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/