Heavy tasks are performed in threads to
prevent the application GUI from freezing. Some of the threads are
hidden, others can be controlled.
Use of threads in the Map Builder
All Map Builder import tasks are performed
in separate threads to ensure GUI responsiveness. This means that
you can open a batch of files of different formats without having
to wait for the current file to finish being imported. This is
basically achieved by calling the start methods of the associated
data sources in a dedicated thread.
Use of threads in map labelling
The map labelling mechanism in JViews Maps is implemented
in a background thread so that the user can continuously zoom,
pan, and scroll the view without being slowed down by the
sometimes CPU-intensive layout algorithms.
As soon as user interaction with the view
stops, a timer starts. If no further change occurs in the view
within a certain length of time (a few hundreds of milliseconds
typically), the label layout process starts in the dedicated
background thread. If it does not finish before the view changes
again, the current task is canceled so that the next one can
start as soon as possible.