diff --git a/hutool-core/src/main/java/cn/hutool/core/convert/RegisterConverter.java b/hutool-core/src/main/java/cn/hutool/core/convert/RegisterConverter.java
index 89926d124..97a4372fe 100644
--- a/hutool-core/src/main/java/cn/hutool/core/convert/RegisterConverter.java
+++ b/hutool-core/src/main/java/cn/hutool/core/convert/RegisterConverter.java
@@ -25,6 +25,7 @@ import cn.hutool.core.convert.impl.TimeZoneConverter;
import cn.hutool.core.convert.impl.URIConverter;
import cn.hutool.core.convert.impl.URLConverter;
import cn.hutool.core.convert.impl.UUIDConverter;
+import cn.hutool.core.convert.impl.ZoneIdConverter;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.lang.Opt;
import cn.hutool.core.reflect.ClassUtil;
@@ -47,6 +48,7 @@ import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.time.OffsetTime;
import java.time.Period;
+import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.temporal.TemporalAccessor;
import java.util.Calendar;
@@ -211,6 +213,7 @@ public class RegisterConverter implements Converter, Serializable {
// 其它类型
defaultConverterMap.put(Class.class, new ClassConverter());
defaultConverterMap.put(TimeZone.class, new TimeZoneConverter());
+ defaultConverterMap.put(ZoneId.class, new ZoneIdConverter());
defaultConverterMap.put(Locale.class, new LocaleConverter());
defaultConverterMap.put(Charset.class, new CharsetConverter());
defaultConverterMap.put(Path.class, new PathConverter());
diff --git a/hutool-core/src/main/java/cn/hutool/core/convert/impl/TemporalAccessorConverter.java b/hutool-core/src/main/java/cn/hutool/core/convert/impl/TemporalAccessorConverter.java
index 11a849ee1..daf743f2f 100644
--- a/hutool-core/src/main/java/cn/hutool/core/convert/impl/TemporalAccessorConverter.java
+++ b/hutool-core/src/main/java/cn/hutool/core/convert/impl/TemporalAccessorConverter.java
@@ -6,10 +6,12 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.StrUtil;
import cn.hutool.core.util.ObjUtil;
+import java.time.DayOfWeek;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
+import java.time.Month;
import java.time.OffsetDateTime;
import java.time.OffsetTime;
import java.time.ZoneId;
@@ -133,6 +135,12 @@ public class TemporalAccessorConverter extends AbstractConverter {
* @return java.time中的对象
*/
private TemporalAccessor parseFromLong(final Class> targetClass, final Long time) {
+ if(targetClass == Month.class){
+ return Month.of(Math.toIntExact(time));
+ } else if(targetClass == DayOfWeek.class){
+ return DayOfWeek.of(Math.toIntExact(time));
+ }
+
return parseFromInstant(targetClass, Instant.ofEpochMilli(time), null);
}
diff --git a/hutool-core/src/main/java/cn/hutool/core/convert/impl/TimeZoneConverter.java b/hutool-core/src/main/java/cn/hutool/core/convert/impl/TimeZoneConverter.java
index 9e74fe8c8..587e1eaee 100644
--- a/hutool-core/src/main/java/cn/hutool/core/convert/impl/TimeZoneConverter.java
+++ b/hutool-core/src/main/java/cn/hutool/core/convert/impl/TimeZoneConverter.java
@@ -1,7 +1,9 @@
package cn.hutool.core.convert.impl;
import cn.hutool.core.convert.AbstractConverter;
+import cn.hutool.core.date.ZoneUtil;
+import java.time.ZoneId;
import java.util.TimeZone;
/**
@@ -14,6 +16,9 @@ public class TimeZoneConverter extends AbstractConverter{
@Override
protected TimeZone convertInternal(final Class> targetClass, final Object value) {
+ if(value instanceof ZoneId){
+ return ZoneUtil.toTimeZone((ZoneId) value);
+ }
return TimeZone.getTimeZone(convertToStr(value));
}
diff --git a/hutool-core/src/main/java/cn/hutool/core/convert/impl/ZoneIdConverter.java b/hutool-core/src/main/java/cn/hutool/core/convert/impl/ZoneIdConverter.java
new file mode 100644
index 000000000..93971aa7d
--- /dev/null
+++ b/hutool-core/src/main/java/cn/hutool/core/convert/impl/ZoneIdConverter.java
@@ -0,0 +1,25 @@
+package cn.hutool.core.convert.impl;
+
+import cn.hutool.core.convert.AbstractConverter;
+import cn.hutool.core.date.ZoneUtil;
+
+import java.time.ZoneId;
+import java.util.TimeZone;
+
+/**
+ * {@link ZoneId}转换器
+ *
+ * @author Looly
+ */
+public class ZoneIdConverter extends AbstractConverter {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected ZoneId convertInternal(final Class> targetClass, final Object value) {
+ if (value instanceof TimeZone) {
+ return ZoneUtil.toZoneId((TimeZone) value);
+ }
+ return ZoneId.of(convertToStr(value));
+ }
+
+}
diff --git a/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java b/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java
index ba8a0ae0b..bbef325e8 100755
--- a/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java
@@ -1455,29 +1455,6 @@ public class DateUtil extends CalendarUtil {
return System.currentTimeMillis() - preTime;
}
- /**
- * 计时器
- * 计算某个过程花费的时间,精确到毫秒
- *
- * @return Timer
- */
- public static TimeInterval timer() {
- return new TimeInterval();
-
- }
-
- /**
- * 计时器
- * 计算某个过程花费的时间,精确到毫秒
- *
- * @param isNano 是否使用纳秒计数,false则使用毫秒
- * @return Timer
- * @since 5.2.3
- */
- public static TimeInterval timer(final boolean isNano) {
- return new TimeInterval(isNano);
- }
-
/**
* 创建秒表{@link StopWatch},用于对代码块的执行时间计数
*
diff --git a/hutool-core/src/main/java/cn/hutool/core/date/GroupTimeInterval.java b/hutool-core/src/main/java/cn/hutool/core/date/GroupTimeInterval.java
deleted file mode 100644
index 142fbdfae..000000000
--- a/hutool-core/src/main/java/cn/hutool/core/date/GroupTimeInterval.java
+++ /dev/null
@@ -1,177 +0,0 @@
-package cn.hutool.core.date;
-
-import cn.hutool.core.util.ObjUtil;
-
-import java.io.Serializable;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * 分组计时器
- * 计算某几个过程花费的时间,精确到毫秒或纳秒
- *
- * @author Looly
- * @since 5.5.2
- */
-public class GroupTimeInterval implements Serializable {
- private static final long serialVersionUID = 1L;
-
- private final boolean isNano;
- protected final Map
- * 如果此分组下没有记录,则返回0;
- *
- * @param id 分组ID
- * @return 重新计时并返回从开始到当前的持续时间
- */
- public long intervalRestart(final String id) {
- final long now = getTime();
- return now - ObjUtil.defaultIfNull(this.groupMap.put(id, now), now);
- }
-
- //----------------------------------------------------------- Interval
-
- /**
- * 从开始到当前的间隔时间(毫秒数)
- * 如果使用纳秒计时,返回纳秒差,否则返回毫秒差
- * 如果分组下没有开始时间,返回{@code null}
- *
- * @param id 分组ID
- * @return 从开始到当前的间隔时间(毫秒数)
- */
- public long interval(final String id) {
- final Long lastTime = this.groupMap.get(id);
- if (null == lastTime) {
- return 0;
- }
- return getTime() - lastTime;
- }
-
- /**
- * 从开始到当前的间隔时间
- *
- * @param id 分组ID
- * @param dateUnit 时间单位
- * @return 从开始到当前的间隔时间(毫秒数)
- */
- public long interval(final String id, final DateUnit dateUnit) {
- final long intervalMs = isNano ? interval(id) / 1000000L : interval(id);
- if (DateUnit.MS == dateUnit) {
- return intervalMs;
- }
- return intervalMs / dateUnit.getMillis();
- }
-
- /**
- * 从开始到当前的间隔时间(毫秒数)
- *
- * @param id 分组ID
- * @return 从开始到当前的间隔时间(毫秒数)
- */
- public long intervalMs(final String id) {
- return interval(id, DateUnit.MS);
- }
-
- /**
- * 从开始到当前的间隔秒数,取绝对值
- *
- * @param id 分组ID
- * @return 从开始到当前的间隔秒数,取绝对值
- */
- public long intervalSecond(final String id) {
- return interval(id, DateUnit.SECOND);
- }
-
- /**
- * 从开始到当前的间隔分钟数,取绝对值
- *
- * @param id 分组ID
- * @return 从开始到当前的间隔分钟数,取绝对值
- */
- public long intervalMinute(final String id) {
- return interval(id, DateUnit.MINUTE);
- }
-
- /**
- * 从开始到当前的间隔小时数,取绝对值
- *
- * @param id 分组ID
- * @return 从开始到当前的间隔小时数,取绝对值
- */
- public long intervalHour(final String id) {
- return interval(id, DateUnit.HOUR);
- }
-
- /**
- * 从开始到当前的间隔天数,取绝对值
- *
- * @param id 分组ID
- * @return 从开始到当前的间隔天数,取绝对值
- */
- public long intervalDay(final String id) {
- return interval(id, DateUnit.DAY);
- }
-
- /**
- * 从开始到当前的间隔周数,取绝对值
- *
- * @param id 分组ID
- * @return 从开始到当前的间隔周数,取绝对值
- */
- public long intervalWeek(final String id) {
- return interval(id, DateUnit.WEEK);
- }
-
- /**
- * 从开始到当前的间隔时间(毫秒数),返回XX天XX小时XX分XX秒XX毫秒
- *
- * @param id 分组ID
- * @return 从开始到当前的间隔时间(毫秒数)
- */
- public String intervalPretty(final String id) {
- return DateUtil.formatBetween(intervalMs(id));
- }
-
- /**
- * 获取时间的毫秒或纳秒数,纳秒非时间戳
- *
- * @return 时间
- */
- private long getTime() {
- return this.isNano ? System.nanoTime() : System.currentTimeMillis();
- }
-}
diff --git a/hutool-core/src/main/java/cn/hutool/core/date/TimeInterval.java b/hutool-core/src/main/java/cn/hutool/core/date/TimeInterval.java
deleted file mode 100644
index 7c83b3183..000000000
--- a/hutool-core/src/main/java/cn/hutool/core/date/TimeInterval.java
+++ /dev/null
@@ -1,133 +0,0 @@
-package cn.hutool.core.date;
-
-import cn.hutool.core.text.StrUtil;
-
-/**
- * 计时器
- * 计算某个过程花费的时间,精确到毫秒或纳秒
- *
- * @author Looly
- */
-public class TimeInterval extends GroupTimeInterval {
- private static final long serialVersionUID = 1L;
- private static final String DEFAULT_ID = StrUtil.EMPTY;
-
- /**
- * 构造,默认使用毫秒计数
- */
- public TimeInterval() {
- this(false);
- }
-
- /**
- * 构造
- *
- * @param isNano 是否使用纳秒计数,false则使用毫秒
- */
- public TimeInterval(final boolean isNano) {
- super(isNano);
- start();
- }
-
- /**
- * @return 开始计时并返回当前时间
- */
- public long start() {
- return start(DEFAULT_ID);
- }
-
- /**
- * @return 重新计时并返回从开始到当前的持续时间
- */
- public long intervalRestart() {
- return intervalRestart(DEFAULT_ID);
- }
-
- /**
- * 重新开始计算时间(重置开始时间)
- *
- * @return this
- * @see #start()
- * @since 3.0.1
- */
- public TimeInterval restart() {
- start(DEFAULT_ID);
- return this;
- }
-
- //----------------------------------------------------------- Interval
-
- /**
- * 从开始到当前的间隔时间(毫秒数)
- * 如果使用纳秒计时,返回纳秒差,否则返回毫秒差
- *
- * @return 从开始到当前的间隔时间(毫秒数)
- */
- public long interval() {
- return interval(DEFAULT_ID);
- }
-
- /**
- * 从开始到当前的间隔时间(毫秒数),返回XX天XX小时XX分XX秒XX毫秒
- *
- * @return 从开始到当前的间隔时间(毫秒数)
- * @since 4.6.7
- */
- public String intervalPretty() {
- return intervalPretty(DEFAULT_ID);
- }
-
- /**
- * 从开始到当前的间隔时间(毫秒数)
- *
- * @return 从开始到当前的间隔时间(毫秒数)
- */
- public long intervalMs() {
- return intervalMs(DEFAULT_ID);
- }
-
- /**
- * 从开始到当前的间隔秒数,取绝对值
- *
- * @return 从开始到当前的间隔秒数,取绝对值
- */
- public long intervalSecond() {
- return intervalSecond(DEFAULT_ID);
- }
-
- /**
- * 从开始到当前的间隔分钟数,取绝对值
- *
- * @return 从开始到当前的间隔分钟数,取绝对值
- */
- public long intervalMinute() {
- return intervalMinute(DEFAULT_ID);
- }
-
- /**
- * 从开始到当前的间隔小时数,取绝对值
- *
- * @return 从开始到当前的间隔小时数,取绝对值
- */
- public long intervalHour() {
- return intervalHour(DEFAULT_ID);
- }
-
- /**
- * 从开始到当前的间隔天数,取绝对值
- *
- * @return 从开始到当前的间隔天数,取绝对值
- */
- public long intervalDay() {
- return intervalDay(DEFAULT_ID);
- }
-
- /**
- * 从开始到当前的间隔周数,取绝对值
- *
- * @return 从开始到当前的间隔周数,取绝对值
- */
- public long intervalWeek() {
- return intervalWeek(DEFAULT_ID);
- }
-}
diff --git a/hutool-core/src/main/java/cn/hutool/core/thread/ConcurrencyTester.java b/hutool-core/src/main/java/cn/hutool/core/thread/ConcurrencyTester.java
index 397b70bf1..49ec2342b 100644
--- a/hutool-core/src/main/java/cn/hutool/core/thread/ConcurrencyTester.java
+++ b/hutool-core/src/main/java/cn/hutool/core/thread/ConcurrencyTester.java
@@ -1,6 +1,6 @@
package cn.hutool.core.thread;
-import cn.hutool.core.date.TimeInterval;
+import cn.hutool.core.date.StopWatch;
import java.io.Closeable;
import java.io.IOException;
@@ -24,7 +24,7 @@ import java.io.IOException;
*/
public class ConcurrencyTester implements Closeable {
private final SyncFinisher sf;
- private final TimeInterval timeInterval;
+ private final StopWatch timeInterval;
private long interval;
/**
@@ -33,7 +33,7 @@ public class ConcurrencyTester implements Closeable {
*/
public ConcurrencyTester(final int threadSize) {
this.sf = new SyncFinisher(threadSize);
- this.timeInterval = new TimeInterval();
+ this.timeInterval = new StopWatch();
}
/**
@@ -52,7 +52,8 @@ public class ConcurrencyTester implements Closeable {
.setBeginAtSameTime(true)
.start();
- this.interval = timeInterval.interval();
+ timeInterval.stop();
+ this.interval = timeInterval.getLastTaskTimeMillis();
return this;
}
@@ -69,7 +70,6 @@ public class ConcurrencyTester implements Closeable {
*/
public ConcurrencyTester reset(){
this.sf.clearWorker();
- this.timeInterval.restart();
return this;
}
diff --git a/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java
index d4e40fde8..752afc2e9 100755
--- a/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java
@@ -313,19 +313,6 @@ public class DateUtilTest {
Assert.assertEquals("31天1小时21分", formatBetween);
}
- @Test
- public void timerTest() {
- final TimeInterval timer = DateUtil.timer();
-
- // ---------------------------------
- // -------这是执行过程
- // ---------------------------------
-
- timer.interval();// 花费毫秒数
- timer.intervalRestart();// 返回花费时间,并重置开始时间
- timer.intervalMinute();// 花费分钟数
- }
-
@Test
public void currentTest() {
final long current = DateUtil.current();
diff --git a/hutool-core/src/test/java/cn/hutool/core/date/TimeIntervalTest.java b/hutool-core/src/test/java/cn/hutool/core/date/TimeIntervalTest.java
deleted file mode 100644
index 731c46ddd..000000000
--- a/hutool-core/src/test/java/cn/hutool/core/date/TimeIntervalTest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package cn.hutool.core.date;
-
-import cn.hutool.core.lang.Console;
-import cn.hutool.core.thread.ThreadUtil;
-import org.junit.Test;
-
-public class TimeIntervalTest {
- @Test
- public void intervalGroupTest(){
- final TimeInterval timer = new TimeInterval();
- timer.start("1");
- ThreadUtil.sleep(800);
- timer.start("2");
- ThreadUtil.sleep(900);
-
-
- Console.log("Timer 1 took {} ms", timer.intervalMs("1"));
- Console.log("Timer 2 took {} ms", timer.intervalMs("2"));
- }
-}
diff --git a/hutool-core/src/test/java/cn/hutool/core/reflect/MethodUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/reflect/MethodUtilTest.java
index 370e631dc..7322a9a70 100644
--- a/hutool-core/src/test/java/cn/hutool/core/reflect/MethodUtilTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/reflect/MethodUtilTest.java
@@ -1,7 +1,6 @@
package cn.hutool.core.reflect;
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.date.TimeInterval;
+import cn.hutool.core.date.StopWatch;
import cn.hutool.core.lang.Console;
import cn.hutool.core.lang.test.bean.ExamInfoDict;
import cn.hutool.core.text.StrUtil;
@@ -88,18 +87,20 @@ public class MethodUtilTest {
// 预热
getMethodWithReturnTypeCheck(ReflectUtilTest.TestBenchClass.class, false, "getH");
- final TimeInterval timer = DateUtil.timer();
+ final StopWatch timer = new StopWatch();
timer.start();
for (int i = 0; i < 100000000; i++) {
MethodUtil.getMethod(ReflectUtilTest.TestBenchClass.class, false, "getH");
}
- Console.log(timer.interval());
+ timer.stop();
+ Console.log(timer.getLastTaskTimeMillis());
- timer.restart();
+ timer.start();
for (int i = 0; i < 100000000; i++) {
getMethodWithReturnTypeCheck(ReflectUtilTest.TestBenchClass.class, false, "getH");
}
- Console.log(timer.interval());
+ timer.stop();
+ Console.log(timer.getLastTaskTimeMillis());
}
public static Method getMethodWithReturnTypeCheck(final Class> clazz, final boolean ignoreCase, final String methodName, final Class>... paramTypes) throws SecurityException {
diff --git a/hutool-core/src/test/java/cn/hutool/core/util/IdUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/IdUtilTest.java
index 31ec0f59e..97bd67699 100755
--- a/hutool-core/src/test/java/cn/hutool/core/util/IdUtilTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/util/IdUtilTest.java
@@ -2,11 +2,11 @@ package cn.hutool.core.util;
import cn.hutool.core.collection.ConcurrentHashSet;
import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.date.TimeInterval;
+import cn.hutool.core.date.StopWatch;
import cn.hutool.core.exceptions.UtilException;
import cn.hutool.core.lang.Console;
-import cn.hutool.core.lang.id.Snowflake;
import cn.hutool.core.lang.id.IdUtil;
+import cn.hutool.core.lang.id.Snowflake;
import cn.hutool.core.thread.ThreadUtil;
import org.junit.Assert;
import org.junit.Ignore;
@@ -48,18 +48,21 @@ public class IdUtilTest {
@Test
@Ignore
public void benchTest() {
- final TimeInterval timer = DateUtil.timer();
+ final StopWatch timer = DateUtil.createStopWatch();
+ timer.start();
for (int i = 0; i < 1000000; i++) {
IdUtil.simpleUUID();
}
- Console.log(timer.interval());
+ timer.stop();
+ Console.log(timer.getLastTaskTimeMillis());
- timer.restart();
+ timer.start();
for (int i = 0; i < 1000000; i++) {
//noinspection ResultOfMethodCallIgnored
UUID.randomUUID().toString().replace("-", "");
}
- Console.log(timer.interval());
+ timer.stop();
+ Console.log(timer.getLastTaskTimeMillis());
}
@Test
diff --git a/hutool-extra/src/main/java/cn/hutool/extra/aop/aspects/TimeIntervalAspect.java b/hutool-extra/src/main/java/cn/hutool/extra/aop/aspects/TimeIntervalAspect.java
index a9f3d98cf..e9bd3ec6a 100755
--- a/hutool-extra/src/main/java/cn/hutool/extra/aop/aspects/TimeIntervalAspect.java
+++ b/hutool-extra/src/main/java/cn/hutool/extra/aop/aspects/TimeIntervalAspect.java
@@ -1,6 +1,6 @@
package cn.hutool.extra.aop.aspects;
-import cn.hutool.core.date.TimeInterval;
+import cn.hutool.core.date.StopWatch;
import cn.hutool.core.lang.Console;
import java.lang.reflect.Method;
@@ -13,7 +13,7 @@ import java.lang.reflect.Method;
public class TimeIntervalAspect extends SimpleAspect {
private static final long serialVersionUID = 1L;
- private final TimeInterval interval = new TimeInterval();
+ private final StopWatch interval = new StopWatch();
@Override
public boolean before(final Object target, final Method method, final Object[] args) {
@@ -23,10 +23,11 @@ public class TimeIntervalAspect extends SimpleAspect {
@Override
public boolean after(final Object target, final Method method, final Object[] args, final Object returnVal) {
+ interval.stop();
Console.log("Method [{}.{}] execute spend [{}]ms return value [{}]",
target.getClass().getName(), //
method.getName(), //
- interval.intervalMs(), //
+ interval.getLastTaskTimeMillis(), //
returnVal);
return true;
}
diff --git a/hutool-http/src/test/java/cn/hutool/http/HttpRequestTest.java b/hutool-http/src/test/java/cn/hutool/http/HttpRequestTest.java
index 56de442b9..d34012c7a 100644
--- a/hutool-http/src/test/java/cn/hutool/http/HttpRequestTest.java
+++ b/hutool-http/src/test/java/cn/hutool/http/HttpRequestTest.java
@@ -1,7 +1,7 @@
package cn.hutool.http;
import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.date.TimeInterval;
+import cn.hutool.core.date.StopWatch;
import cn.hutool.core.lang.Console;
import cn.hutool.core.net.SSLProtocols;
import cn.hutool.core.net.url.UrlBuilder;
@@ -68,24 +68,31 @@ public class HttpRequestTest {
@Test
@Ignore
public void asyncGetTest() {
- final TimeInterval timer = DateUtil.timer();
+ final StopWatch timer = DateUtil.createStopWatch();
+ timer.start();
final HttpResponse body = HttpRequest.get(url).charset("GBK").executeAsync();
- final long interval = timer.interval();
- timer.restart();
+ timer.stop();
+ final long interval = timer.getLastTaskTimeMillis();
+ timer.start();
Console.log(body.body());
- final long interval2 = timer.interval();
+ timer.stop();
+ final long interval2 = timer.getLastTaskTimeMillis();
Console.log("Async response spend {}ms, body spend {}ms", interval, interval2);
}
@Test
@Ignore
public void syncGetTest() {
- final TimeInterval timer = DateUtil.timer();
+ final StopWatch timer = DateUtil.createStopWatch();
+ timer.start();
final HttpResponse body = HttpRequest.get(url).charset("GBK").execute();
- final long interval = timer.interval();
- timer.restart();
+ timer.stop();
+ final long interval = timer.getLastTaskTimeMillis();
+
+ timer.start();
Console.log(body.body());
- final long interval2 = timer.interval();
+ timer.stop();
+ final long interval2 = timer.getLastTaskTimeMillis();
Console.log("Async response spend {}ms, body spend {}ms", interval, interval2);
}