|
|
|
@ -1,6 +1,9 @@
|
|
|
|
|
package com.fr.design.data.datapane.management.search.time; |
|
|
|
|
|
|
|
|
|
import com.fr.concurrent.NamedThreadFactory; |
|
|
|
|
import com.fr.general.ComparatorUtils; |
|
|
|
|
import com.fr.general.GeneralUtils; |
|
|
|
|
import com.fr.third.org.apache.commons.lang3.ObjectUtils; |
|
|
|
|
|
|
|
|
|
import java.util.concurrent.Executors; |
|
|
|
|
import java.util.concurrent.ScheduledExecutorService; |
|
|
|
@ -16,7 +19,7 @@ public class TableDataSearchTimer {
|
|
|
|
|
/** |
|
|
|
|
* 定时器 |
|
|
|
|
*/ |
|
|
|
|
private ScheduledExecutorService scheduler; |
|
|
|
|
private static ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory(TableDataSearchTimer.class)); |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 定时任务 |
|
|
|
@ -40,15 +43,24 @@ public class TableDataSearchTimer {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void startClock() { |
|
|
|
|
this.scheduler = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory(TableDataSearchTimer.class)); |
|
|
|
|
this.timeTask = new TableDataSearchTimerTask(); |
|
|
|
|
scheduler.schedule(timeTask, MAX_SEARCH_TIME, TimeUnit.MILLISECONDS); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void stopClock() { |
|
|
|
|
this.timeTask = null; |
|
|
|
|
if (this.scheduler != null) { |
|
|
|
|
this.scheduler.shutdownNow(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void shutdown() { |
|
|
|
|
scheduler.shutdown(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 判断是不是当前的Timer中的task,为了避免shutdownNow()之后原task仍在执行,可能会 |
|
|
|
|
* @param task |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
public boolean isCurrentTask(TableDataSearchTimerTask task) { |
|
|
|
|
return ComparatorUtils.equals(this.timeTask, task); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|