diff options
| author | Markus Keller | 2015-11-18 16:14:19 +0000 |
|---|---|---|
| committer | Markus Keller | 2015-11-20 13:43:36 +0000 |
| commit | 5987551acfa800096c0d908175e5a813abced853 (patch) | |
| tree | f74ac71260a887cc5f40ab966c6c0db42d91f883 | |
| parent | ebcf884f9501466c499fb8d8b083dcd7b5ae105f (diff) | |
| download | eclipse.platform.ui-5987551acfa800096c0d908175e5a813abced853.tar.gz eclipse.platform.ui-5987551acfa800096c0d908175e5a813abced853.tar.xz eclipse.platform.ui-5987551acfa800096c0d908175e5a813abced853.zip | |
Bug 480076: Excessive threads created (more than 30,000) for some tests, on some machines
Change-Id: I347d6b9e9ed91e774198eb472d2ff7d9c5c48fcb
| -rw-r--r-- | bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/MutableActivityManager.java | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/MutableActivityManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/MutableActivityManager.java index d83d7b306ef..57d63274734 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/MutableActivityManager.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/activities/MutableActivityManager.java @@ -928,9 +928,11 @@ public final class MutableActivityManager extends AbstractActivityManager */ private Job getUpdateJob() { if (deferredIdentifierJob == null) { - deferredIdentifierJob = Job.create("Identifier Update Job", new IJobFunction() { //$NON-NLS-1$ + deferredIdentifierJob = Job.create("Activity Identifier Update", new IJobFunction() { //$NON-NLS-1$ @Override public IStatus run(IProgressMonitor monitor) { + final Map identifierEventsByIdentifierId = new HashMap(); + while (!deferredIdentifiers.isEmpty()) { Identifier identifier = (Identifier) deferredIdentifiers.remove(0); Set activityIds = new HashSet(); @@ -948,21 +950,20 @@ public final class MutableActivityManager extends AbstractActivityManager if (activityIdsChanged) { IdentifierEvent identifierEvent = new IdentifierEvent(identifier, activityIdsChanged, false); - final Map identifierEventsByIdentifierId = new HashMap(1); identifierEventsByIdentifierId.put(identifier.getId(), identifierEvent); - UIJob notifyJob = new UIJob("Identifier Update Job") { //$NON-NLS-1$ - - @Override - public IStatus runInUIThread( - IProgressMonitor monitor) { - notifyIdentifiers(identifierEventsByIdentifierId); - return Status.OK_STATUS; - } - }; - notifyJob.setSystem(true); - notifyJob.schedule(); - } + } + } + if (!identifierEventsByIdentifierId.isEmpty()) { + UIJob notifyJob = new UIJob("Activity Identifier Update UI") { //$NON-NLS-1$ + @Override + public IStatus runInUIThread(IProgressMonitor monitor) { + notifyIdentifiers(identifierEventsByIdentifierId); + return Status.OK_STATUS; + } + }; + notifyJob.setSystem(true); + notifyJob.schedule(); } return Status.OK_STATUS; } |
