Method and Apparatus for Viewing Progress in a Multi-Threaded Application
Original Publication Date: 2005-Nov-30
Included in the Prior Art Database: 2005-Nov-30
With the ascendancy of the Java (TM) programming language, with its simple interfaces for writing multithreaded applications, we are on the threshold of a new age of multithreaded programming. Multithreading carries much promise for improving efficiency, allowing a single application to perform several potentially time-consuming tasks in parallel. However, the true power of multithreading has been slow to arrive (witness Lotus Notes, which still executes all user-initiated actions in a single thread), partially as a result of the lack of powerful and consistent user-interface metaphors to allow users to fully benefit from the power of multithreading.
Method and Apparatus for Viewing Progress in a Multi -Threaded Application
1. Background: What is the problem solved by your invention? Describe known solutions to this problem (if any). What are the drawbacks of such known solutions, or why is an additional solution required? Cite any relevant technical documents or references.
The inability of the user to monitor progress of a thread of execution constitutes a major roadblock to the implementation of multi-threaded interfaces. Current multi-threaded implementations may present a progress message on a status bar (since only one message is visible at any given time, this is a particularly dubious attempt), or may spawn individual dialogs. In some applications, the only progress notification is of the completion of a thread, signaled by the appearance of a dialog containing a message.
Some operating systems attempt to help application users by providing an "hourglass-pointer" cursor, which is intended to indicate that some thread is doing work, but that that work is being done on a separate thread, and the user may still perform actions in the user interface. This mechanism, of course, gives no cues as to the background action being performed, or its progress.
A pattern for a component, called the "MultiProgressBar", provides a visual apparatus, a consistent user interface metaphor, for allowing users to keep track of progress of individual threads within a multithreaded application. The MultiProgressBar allows users, at a glance, to track the progress of all threads of execution with in an application, while also allowing them to examine, and even control, the details of each individual thread's progress. An example interface shown here, but this discussion is meant to encompass all functionally similar means of visually tracking progress of threads within an application.
The component is comprised of a set of progress bars, stacked atop one another. Each progress bar within the MultiProgress bar tracks the execution of a single thread. Grouping all progress bars within a single component, which may in turn be placed in a single window, simplifies presentation, making it easier for users to monitor the progress of each parallel-executing task.
The MultiProgressBar also has an additional state, in which the user has the ability to get details on the individual tasks. Our example shows this "details" state manifested as a drop-down list, in which each progress bar is displayed, but appears in the context of additional information (most important among possible thread information is a name for the task being executed in that thread, and a percentage-completed figure).
This apparatus allows other extensions, including a centrali...