VirtualThread

This commit is contained in:
2025-06-17 17:09:34 +08:00
parent 5f8c4fd6e6
commit 7d6c87cc74
8 changed files with 17 additions and 11 deletions

View File

@ -5,7 +5,7 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.4</version>
<version>3.3.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.ycwl</groupId>
@ -100,7 +100,7 @@
<!--mybatis plus和springboot整合-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.5</version>
</dependency>

View File

@ -96,7 +96,7 @@ public class WxPayServiceImpl implements WxPayService {
log.info("[微信支付]parse = {}", callbackResponse);
// 更新订单信息
new Thread(() -> {
Thread.ofVirtual().start(() -> {
long orderId = Long.parseLong(callbackResponse.getOrderNo());
if (callbackResponse.isPay()) {
orderBiz.paidOrder(orderId);
@ -105,7 +105,7 @@ public class WxPayServiceImpl implements WxPayService {
} else if (callbackResponse.isRefund()) {
orderBiz.refundOrder(orderId);
}
}).start();
});
} catch (Exception e) {
throw new AppException(BizCodeEnum.ADVANCE_PAYMENT_CALLBACK_FAILED, e.toString());
}

View File

@ -314,12 +314,12 @@ public class FaceServiceImpl implements FaceService {
FaceEntity face = faceRepository.getFace(faceId);
faceMapper.deleteById(faceId);
faceRepository.clearFaceCache(faceId);
new Thread(() -> {
Thread.ofVirtual().start(() -> {
sourceMapper.deleteNotBuyFaceRelation(face.getMemberId(), faceId);
videoMapper.deleteNotBuyFaceRelations(face.getMemberId(), faceId);
IFaceBodyAdapter adapter = scenicService.getScenicFaceBodyAdapter(face.getScenicId());
adapter.deleteFace(USER_FACE_DB_NAME+face.getScenicId().toString(), faceId.toString());
}).start();
});
return ApiResponse.success("删除成功");
}

View File

@ -100,10 +100,10 @@ public class ScenicServiceImpl implements ScenicService {
if (i > 0) {
scenicAccountMapper.deleteByScenicId(id);
IFaceBodyAdapter adapter = getScenicFaceBodyAdapter(id);
(new Thread(() -> {
Thread.ofVirtual().start(() -> {
adapter.deleteFaceDb(id.toString());
adapter.deleteFaceDb(USER_FACE_DB_NAME + id);
})).start();
});
scenicMapper.deleteConfigByScenicId(id);
scenicRepository.clearCache(id);
scenicFaceBodyAdapterMap.remove(id);

View File

@ -610,7 +610,7 @@ public class TaskTaskServiceImpl implements TaskService {
}
}
videoMapper.updateRelationWhenTaskSuccess(taskId, video.getId(), isBuy);
new Thread(() -> sendVideoGeneratedServiceNotification(taskId)).start();
Thread.ofVirtual().start(() -> sendVideoGeneratedServiceNotification(taskId));
}
@Override

View File

@ -103,13 +103,13 @@ public class VideoPieceGetter {
return;
}
log.info("poll task: {}/{}", task, queue.size());
new Thread(() -> {
Thread.ofVirtual().start(() -> {
try {
runTask(task);
} catch (Exception e) {
log.error("run task error", e);
}
}).start();
});
}
private void runTask(Task task) {

View File

@ -31,6 +31,9 @@ spring:
multipart:
max-file-size: 500MB
max-request-size: 500MB
threads:
virtual:
enabled: true
web:
resources:
static-locations: classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

View File

@ -35,6 +35,9 @@ spring:
multipart:
max-file-size: 500MB
max-request-size: 500MB
threads:
virtual:
enabled: true
web:
resources:
static-locations: classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/