diff --git a/CHANGELOG.md b/CHANGELOG.md
index fc1a1602a..7f659b057 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -21,6 +21,8 @@
* 【http 】 HttpServerRequest增加getParam方法
* 【http 】 RootAction增加可选name参数,返回指定文件名称
* 【db 】 支持人大金仓8的驱动识别
+* 【db 】 ThreadUtil增加createScheduledExecutor和schedule方法(issue#I2NUTC@Gitee)
+* 【core 】 ImgUtil增加getImage方法(issue#I2DU1Z@Gitee)
### Bug修复
* 【core 】 修复FileUtil.move以及PathUtil.copy等无法自动创建父目录的问题(issue#I2CKTI@Gitee)
diff --git a/hutool-core/src/main/java/cn/hutool/core/img/ImgUtil.java b/hutool-core/src/main/java/cn/hutool/core/img/ImgUtil.java
index 98537bef7..9dcbfa410 100644
--- a/hutool-core/src/main/java/cn/hutool/core/img/ImgUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/img/ImgUtil.java
@@ -29,6 +29,7 @@ import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
+import java.awt.Toolkit;
import java.awt.font.FontRenderContext;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
@@ -183,7 +184,7 @@ public class ImgUtil {
* @param destImageFile 缩放后的图像地址
* @param width 缩放后的宽度
* @param height 缩放后的高度
- * @param fixedColor 补充的颜色,不补充为null
+ * @param fixedColor 补充的颜色,不补充为{@code null}
* @throws IORuntimeException IO异常
*/
public static void scale(File srcImageFile, File destImageFile, int width, int height, Color fixedColor) throws IORuntimeException {
@@ -201,7 +202,7 @@ public class ImgUtil {
* @param destStream 缩放后的图像目标流
* @param width 缩放后的宽度
* @param height 缩放后的高度
- * @param fixedColor 比例不对时补充的颜色,不补充为null
+ * @param fixedColor 比例不对时补充的颜色,不补充为{@code null}
* @throws IORuntimeException IO异常
*/
public static void scale(InputStream srcStream, OutputStream destStream, int width, int height, Color fixedColor) throws IORuntimeException {
@@ -216,7 +217,7 @@ public class ImgUtil {
* @param destStream 缩放后的图像目标流
* @param width 缩放后的宽度
* @param height 缩放后的高度
- * @param fixedColor 比例不对时补充的颜色,不补充为null
+ * @param fixedColor 比例不对时补充的颜色,不补充为{@code null}
* @throws IORuntimeException IO异常
*/
public static void scale(ImageInputStream srcStream, ImageOutputStream destStream, int width, int height, Color fixedColor) throws IORuntimeException {
@@ -231,7 +232,7 @@ public class ImgUtil {
* @param destImageStream 缩放后的图像目标流
* @param width 缩放后的宽度
* @param height 缩放后的高度
- * @param fixedColor 比例不对时补充的颜色,不补充为null
+ * @param fixedColor 比例不对时补充的颜色,不补充为{@code null}
* @throws IORuntimeException IO异常
*/
public static void scale(Image srcImage, ImageOutputStream destImageStream, int width, int height, Color fixedColor) throws IORuntimeException {
@@ -245,7 +246,7 @@ public class ImgUtil {
* @param srcImage 源图像
* @param width 缩放后的宽度
* @param height 缩放后的高度
- * @param fixedColor 比例不对时补充的颜色,不补充为null
+ * @param fixedColor 比例不对时补充的颜色,不补充为{@code null}
* @return {@link Image}
*/
public static Image scale(Image srcImage, int width, int height, Color fixedColor) {
@@ -1641,6 +1642,17 @@ public class ImgUtil {
return result;
}
+ /**
+ * 从URL中获取或读取图片对象
+ *
+ * @param url URL
+ * @return {@link Image}
+ * @since 5.5.8
+ */
+ public static Image getImage(URL url){
+ return Toolkit.getDefaultToolkit().getImage(url);
+ }
+
/**
* 从{@link Resource}中读取图片
*
diff --git a/hutool-core/src/main/java/cn/hutool/core/thread/ThreadUtil.java b/hutool-core/src/main/java/cn/hutool/core/thread/ThreadUtil.java
index 09f9a382d..7dc251bdd 100644
--- a/hutool-core/src/main/java/cn/hutool/core/thread/ThreadUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/thread/ThreadUtil.java
@@ -8,6 +8,7 @@ import java.util.concurrent.ExecutorCompletionService;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@@ -31,7 +32,7 @@ public class ThreadUtil {
* @param corePoolSize 同时执行的线程数大小
* @return ExecutorService
*/
- public static ExecutorService newExecutor(int corePoolSize) {
+ public static ExecutorService newExecutor(int corePoolSize) {
ExecutorBuilder builder = ExecutorBuilder.create();
if (corePoolSize > 0) {
builder.setCorePoolSize(corePoolSize);
@@ -540,4 +541,49 @@ public class ThreadUtil {
public static ConcurrencyTester concurrencyTest(int threadSize, Runnable runnable) {
return (new ConcurrencyTester(threadSize)).test(runnable);
}
+
+ /**
+ * 创建{@link ScheduledThreadPoolExecutor}
+ *
+ * @param corePoolSize 初始线程池大小
+ * @return {@link ScheduledThreadPoolExecutor}
+ * @since 5.5.8
+ */
+ public static ScheduledThreadPoolExecutor createScheduledExecutor(int corePoolSize) {
+ return new ScheduledThreadPoolExecutor(corePoolSize);
+ }
+
+ /**
+ * 开始执行一个定时任务,执行方式分fixedRate模式和fixedDelay模式。
+ *
+ *