diff --git a/platform/lang-impl/src/com/intellij/execution/startup/ProjectStartupRunner.java b/platform/lang-impl/src/com/intellij/execution/startup/ProjectStartupRunner.java index 5dba69fdf9ee..84787eb6b16f 100644 --- a/platform/lang-impl/src/com/intellij/execution/startup/ProjectStartupRunner.java +++ b/platform/lang-impl/src/com/intellij/execution/startup/ProjectStartupRunner.java @@ -15,6 +15,7 @@ */ package com.intellij.execution.startup; +import com.intellij.concurrency.JobScheduler; import com.intellij.execution.*; import com.intellij.execution.executors.DefaultRunExecutor; import com.intellij.execution.impl.RunManagerImpl; @@ -34,6 +35,7 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.TimeUnit; /** * @author Irina.Chernushina on 8/19/2015. @@ -65,18 +67,18 @@ public class ProjectStartupRunner implements StartupActivity, DumbAware { projectStartupTaskManager.checkOnChange(settings); } }); - final Alarm alarm = new Alarm(Alarm.ThreadToUse.POOLED_THREAD, project); - alarm.addRequest(createRequest(project, alarm), DELAY_MILLIS); + scheduleRunActivities(project); } - private static Runnable createRequest(final Project project, final Alarm alarm) { - return () -> { - if (! ((StartupManagerEx) StartupManager.getInstance(project)).postStartupActivityPassed() && !Registry.is("dumb.aware.run.configurations")) { - alarm.addRequest(createRequest(project, alarm), DELAY_MILLIS); - } else { + private static void scheduleRunActivities(@NotNull Project project) { + JobScheduler.getScheduler().schedule(() -> { + if (!((StartupManagerEx)StartupManager.getInstance(project)).postStartupActivityPassed() && !Registry.is("dumb.aware.run.configurations")) { + scheduleRunActivities(project); + } + else { runActivities(project); } - }; + }, DELAY_MILLIS, TimeUnit.MILLISECONDS); } private static void runActivities(final Project project) { diff --git a/platform/platform-impl/src/com/intellij/internal/statistic/persistence/ApplicationStatisticsPersistenceComponent.java b/platform/platform-impl/src/com/intellij/internal/statistic/persistence/ApplicationStatisticsPersistenceComponent.java index d9266935d53d..ed9988296f59 100644 --- a/platform/platform-impl/src/com/intellij/internal/statistic/persistence/ApplicationStatisticsPersistenceComponent.java +++ b/platform/platform-impl/src/com/intellij/internal/statistic/persistence/ApplicationStatisticsPersistenceComponent.java @@ -15,6 +15,7 @@ */ package com.intellij.internal.statistic.persistence; +import com.intellij.concurrency.JobScheduler; import com.intellij.ide.AppLifecycleListener; import com.intellij.internal.statistic.UsagesCollector; import com.intellij.internal.statistic.beans.GroupDescriptor; @@ -25,8 +26,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.project.ProjectManagerAdapter; import com.intellij.openapi.util.text.StringUtil; -import com.intellij.util.Alarm; -import com.intellij.util.Function; import gnu.trove.THashSet; import org.jdom.Element; import org.jetbrains.annotations.NonNls; @@ -35,6 +34,7 @@ import org.jetbrains.annotations.NotNull; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.TimeUnit; @State( name = "StatisticsApplicationUsages", @@ -44,9 +44,6 @@ public class ApplicationStatisticsPersistenceComponent extends ApplicationStatis implements ApplicationComponent, PersistentStateComponent { private boolean persistOnClosing = !ApplicationManager.getApplication().isUnitTestMode(); - private final Alarm myAlarm; - private final long PERSIST_PERIOD = 24*60*60*1000; //1 day - private static final String TOKENIZER = ","; @NonNls @@ -63,10 +60,6 @@ public class ApplicationStatisticsPersistenceComponent extends ApplicationStatis @NonNls private static final String VALUES_ATTR = "values"; - public ApplicationStatisticsPersistenceComponent() { - myAlarm = new Alarm(Alarm.ThreadToUse.POOLED_THREAD, ApplicationManager.getApplication()); - } - public static ApplicationStatisticsPersistenceComponent getInstance() { return ApplicationManager.getApplication().getComponent(ApplicationStatisticsPersistenceComponent.class); } @@ -80,7 +73,7 @@ public class ApplicationStatisticsPersistenceComponent extends ApplicationStatis String projectId = projectElement.getAttributeValue(PROJECT_ID_ATTR); String frameworks = projectElement.getAttributeValue(VALUES_ATTR); if (!StringUtil.isEmptyOrSpaces(projectId) && !StringUtil.isEmptyOrSpaces(frameworks)) { - Set frameworkDescriptors = new THashSet(); + Set frameworkDescriptors = new THashSet<>(); for (String key : StringUtil.split(frameworks, TOKENIZER)) { UsageDescriptor descriptor = getUsageDescriptor(key); if (descriptor != null) { @@ -192,11 +185,8 @@ public class ApplicationStatisticsPersistenceComponent extends ApplicationStatis persistPeriodically(); } - private void persistPeriodically() { - myAlarm.addRequest(() -> { - persistOpenedProjects(); - persistPeriodically(); - }, PERSIST_PERIOD); + private static void persistPeriodically() { + JobScheduler.getScheduler().scheduleWithFixedDelay(ApplicationStatisticsPersistenceComponent::persistOpenedProjects, 1, 1, TimeUnit.DAYS); } private static void persistOpenedProjects() { @@ -205,7 +195,6 @@ public class ApplicationStatisticsPersistenceComponent extends ApplicationStatis } } - @Override public void disposeComponent() { } diff --git a/platform/platform-impl/src/com/intellij/internal/statistic/updater/SendStatisticsComponent.java b/platform/platform-impl/src/com/intellij/internal/statistic/updater/SendStatisticsComponent.java index ac63c6e31b30..b2548da00570 100644 --- a/platform/platform-impl/src/com/intellij/internal/statistic/updater/SendStatisticsComponent.java +++ b/platform/platform-impl/src/com/intellij/internal/statistic/updater/SendStatisticsComponent.java @@ -15,6 +15,7 @@ */ package com.intellij.internal.statistic.updater; +import com.intellij.concurrency.JobScheduler; import com.intellij.ide.FrameStateListener; import com.intellij.ide.FrameStateManager; import com.intellij.internal.statistic.StatisticsUploadAssistant; @@ -31,12 +32,11 @@ import com.intellij.openapi.wm.ex.WindowManagerEx; import com.intellij.openapi.wm.impl.IdeFrameImpl; import com.intellij.ui.BalloonLayout; import com.intellij.ui.BalloonLayoutImpl; -import com.intellij.util.Alarm; -import com.intellij.util.Time; import org.jetbrains.annotations.NotNull; -import java.awt.Window; +import java.awt.*; import java.util.Arrays; +import java.util.concurrent.TimeUnit; public class SendStatisticsComponent implements ApplicationComponent { @@ -44,13 +44,9 @@ public class SendStatisticsComponent implements ApplicationComponent { private static final int DELAY_IN_MIN = 10; - private final Alarm myAlarm; - private final FrameStateManager myFrameStateManager; public SendStatisticsComponent(@NotNull FrameStateManager frameStateManager) { - myAlarm = new Alarm(Alarm.ThreadToUse.POOLED_THREAD, ApplicationManager.getApplication()); - NotificationsConfigurationImpl.remove("SendUsagesStatistics"); NotificationsConfiguration.getNotificationsConfiguration().register( StatisticsNotificationManager.GROUP_DISPLAY_ID, @@ -101,8 +97,8 @@ public class SendStatisticsComponent implements ApplicationComponent { } } - private void runWithDelay(final @NotNull StatisticsService statisticsService) { - myAlarm.addRequest(() -> statisticsService.send(), Time.MINUTE * DELAY_IN_MIN); + private static void runWithDelay(@NotNull final StatisticsService statisticsService) { + JobScheduler.getScheduler().schedule(statisticsService::send, DELAY_IN_MIN, TimeUnit.MINUTES); } @Override diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java index b1dab502cdb4..9ff768fae916 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java @@ -16,6 +16,7 @@ package com.intellij.execution.testframework.sm.runner.ui; import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer; +import com.intellij.concurrency.JobScheduler; import com.intellij.execution.TestStateStorage; import com.intellij.execution.configurations.RunConfiguration; import com.intellij.execution.configurations.RunProfile; @@ -49,7 +50,6 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.pom.Navigatable; import com.intellij.ui.JBColor; -import com.intellij.util.Alarm; import com.intellij.util.OpenSourceUtil; import com.intellij.util.PathUtil; import com.intellij.util.containers.ContainerUtil; @@ -73,6 +73,7 @@ import java.io.FileWriter; import java.text.SimpleDateFormat; import java.util.*; import java.util.List; +import java.util.concurrent.TimeUnit; /** * @author: Roman Chernyatchik @@ -114,8 +115,7 @@ public class SMTestRunnerResultsForm extends TestResultsPanel private final Set myMentionedCategories = new LinkedHashSet(); private boolean myTestsRunning = true; private AbstractTestProxy myLastSelected; - private Alarm myUpdateQueue; - private Set myRequests = Collections.synchronizedSet(new HashSet()); + private final Set myRequests = Collections.synchronizedSet(new HashSet()); private boolean myDisposed = false; private SMTestProxy myLastFailed; @@ -199,7 +199,6 @@ public class SMTestRunnerResultsForm extends TestResultsPanel //TODO always hide root node //myTreeView.setRootVisible(false); - myUpdateQueue = new Alarm(Alarm.ThreadToUse.POOLED_THREAD, this); return myTreeView; } @@ -561,8 +560,8 @@ public class SMTestRunnerResultsForm extends TestResultsPanel if (ApplicationManager.getApplication().isUnitTestMode()) { update.run(); } - else if (myRequests.add(update) && !myUpdateQueue.isDisposed()) { - myUpdateQueue.addRequest(update, 100); + else if (myRequests.add(update) && !myDisposed) { + JobScheduler.getScheduler().schedule(update, 100, TimeUnit.MILLISECONDS); } myTreeBuilder.repaintWithParents(newTestOrSuite);