Concurrency/Background Operation Details

Resources

Platform Plug-in Developer's Guide:

org.eclipse.core.runtime.jobs API Javadoc

On the Job: The Eclipse Jobs API. Eclipse.org article on concurrency and responsive UI infrastructure.

Job examples plugin. Example plug-in demonstrating various features of jobs and the progress UI.

EclipseCon concurrency talk. Slides from a talk at EclipseCon 2004 on concurrency and responsiveness.

The road to responsiveness. Slides from another talk on concurrency and responsiveness.

Showing Modal Progress in Eclipse 3.0 [Updated June 23, 2004]. A document on how to migrate existing code that shows modal progress using ProgressMonitorDialog or BusyIndicator.

DeveloperWorks articles on concurrency in Java:

Plans and Proposals

Overview of the problems we are seeking to address. This document also outlines an implementation schedule and plan.

Proposed changes to builders and listeners. Describes the plan to make resource change listeners and incremental project builders run concurrently. Includes an implementation and release schedule.

Showing progress in Eclipse 3.0. Describes remaining issues in 3.0 M4 around how progress is shown for modal and non-modal operations.

Remaining Eclipse 3.0 responsiveness issues. Describes the remaining responsiveness work for the 3.0 M5 milestone.

Progress updates

April 30, 2004 - Significant changes have been made to the UI presentation of jobs. A new class of "user" initiated jobs are now shown in a progress dialog by default, and moved to the background on request. The progress view was replaced with a new implementation using native progress indicators. Jobs in this view can also have actions associated with them for executing when the job completes. An affordance on the workbench window status line indicates when there is activity in the progress view, and when there are interesting results being shown.

January 26, 2004 - Job and UI API are feature complete. Remaining work is to improve the UI experience, fix bugs, and write documentation.

October 20, 2003 (M4 milestone) - Most existing background activity has been moved to use the jobs API. New feature work (such as quick diff) is also using jobs extensively. The UI now gives feedback when a modal operation is blocked due to conflicts with a background operation, and the user is able to cancel when in this state. A dynamic team has been setup to address the remaining responsiveness issues for the M5 milestone.

July 14, 2003 - Several clients are now using the job manager for background activity, including the UI decorator and various debug threads. The CVS/Team component is using jobs in a "work in progress" mode that has to be enabled from preference pages. This includes background filling of the repository view, background update of live sync view, and background CVS operations such as checkout. The UI progress indicator needs to be manually enabled by hard-coding the preference "showProgressIndicator=true" in the org.eclipse.ui.workbench preference store. In branch "Bug_36957", org.eclipse.core.resources now uses background jobs for building, resource change notification, and workspace snapshot (incremental save). Search and JDT core components are actively working on moving to job manager API.

June 24, 2003 - The additional support from the Workbench team for the responsive UI work has been released to HEAD. It appears in Nightly builds starting with N20030624 and will be included in the July 1 integration build. Many bug fixes and API refinements have been released to the job manager infrastructure in org.eclipse.core.runtime in HEAD.

June 4, 2003 - Implementation of core job manager API has been released to the 3.0 HEAD stream. This API is still experimental, and is not currently used by any components in the platform. There is ongoing work in branch "Bug_36957" in both core and UI that is beginning to use this API.