Re: Setting GUI thread priority
FutureScalper wrote:
I've successfully interated through threads on windows named AWT-
EventQueue-* and change their priorities. I assume this changes the
execution priority of code running on the GUI thread. Is this a
correct assumption? I need to adjust relative priorities within my
code. So do you think this will actually work to alter the priority
of AWT/Swing GUI tasks?
It depends on the JVM. There are no hard guarantees about how Java thread
priorities map to OS priorities, even assuming the OS has them.
Generally, however, you can count on a higher-priority thread starting when a
time slice opens.
However, many scheduling algorithms will promote a thread's priority if it
hasn't run in a while. So your low-priority thread might still occasionally
jump in ahead of one with a nominally higher priority.
Priority scheduling in a GUI as you suggest is almost certainly not going to
help. First of all, you do not indicate exactly how you adjust your thread
priorities - it might be that you missed the Event Dispatch Thread (EDT).
More importantly, the focus on thread priority does not mean you are getting
the GUI thread management correct. You still need to move long-running tasks
off the EDT, and absolutely ensure that graphic activity occurs only on the
EDT. You still need to synchronize concurrent data access, although not
necessarily via the "synchronized" keyword. In other words, messing with
priorities adds to your work, but doesn't relieve you of any.
Furthermore, once you do all the right things with tasks off the EDT and
graphics on it, you will have a snappy, responsive GUI without having to deal
with thread priorities.
Which leads to a question, as I am making a huge assumption here. What is
your purpose in adjusting thread priorities in your GUI?
I am asking for the benefit, or the goal here, not a mere description of the
technique. What will thread priority adjustment accomplish in your application?
--
Lew