concurrent.ScheduledExecutorService log

本文介绍如何使用 Java 的 ScheduledExecutorService 接口来创建一个单线程的定时任务执行器,并展示如何安排任务以固定速率运行以及如何关闭定时任务执行器。
java.util.concurrent.ScheduledExecutorService exetutor=Executors.newScheduledThreadPool(1);
exetutor.scheduleAtFixedRate(arg0, arg1, arg2, arg3);
exetutor.shutdownNow();


android.util.Log.i("","");
java.util.concurrent.RejectedExecutionException: Task io.grpc.internal.SerializingExecutor@19899a6a rejected from java.util.concurrent.ThreadPoolExecutor@1fba403c[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 7] at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2063) ~[?:1.8.0_202] at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:830) ~[?:1.8.0_202] at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1379) ~[?:1.8.0_202] at io.grpc.internal.SerializingExecutor.schedule(SerializingExecutor.java:93) ~[grpc-core-1.30.2.jar:1.30.2] at io.grpc.internal.SerializingExecutor.execute(SerializingExecutor.java:86) ~[grpc-core-1.30.2.jar:1.30.2] at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.closedInternal(ClientCallImpl.java:755) ~[grpc-core-1.30.2.jar:1.30.2] at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.closed(ClientCallImpl.java:705) ~[grpc-core-1.30.2.jar:1.30.2] at io.grpc.internal.FailingClientStream.start(FailingClientStream.java:54) ~[grpc-core-1.30.2.jar:1.30.2] at io.grpc.internal.ClientCallImpl.startInternal(ClientCallImpl.java:287) ~[grpc-core-1.30.2.jar:1.30.2] at io.grpc.internal.ClientCallImpl.start(ClientCallImpl.java:210) ~[grpc-core-1.30.2.jar:1.30.2] at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:341) ~[grpc-stub-1.51.0.jar:1.51.0] at io.grpc.stub.ClientCalls.asyncStreamingRequestCall(ClientCalls.java:332) ~[grpc-stub-1.51.0.jar:1.51.0] at io.grpc.stub.ClientCalls.asyncBidiStreamingCall(ClientCalls.java:119) ~[grpc-stub-1.51.0.jar:1.51.0] at com.cmbchina.ccc.infra.framework.grpc.api.GrpcServiceGrpc$GrpcServiceStub.notify(GrpcServiceGrpc.java:144) ~[grpc-client-lib-1.0.0-20250609.084419-19.jar:1.0.0-SNAPSHOT] at com.cmbchina.ccc.infra.framework.grpc.notify.GrpcChannelClient.connGrpc(GrpcChannelClient.java:158) ~[grpc-client-notify-1.0.0-20250609.084419-19.jar:1.0.0-SNAPSHOT] at com.cmbchina.ccc.infra.framework.grpc.notify.GrpcChannelClient.startGrpcChannel(GrpcChannelClient.java:128) ~[grpc-client-notify-1.0.0-20250609.084419-19.jar:1.0.0-SNAPSHOT] at com.cmbchina.ccc.infra.framework.grpc.notify.GrpcChannelClient.lambda$retryGrpc$0(GrpcChannelClient.java:237) ~[grpc-client-notify-1.0.0-20250609.084419-19.jar:1.0.0-SNAPSHOT] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_202] at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266) ~[?:1.8.0_202] at java.util.concurrent.FutureTask.run(FutureTask.java) ~[?:1.8.0_202] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_202] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[?:1.8.0_202] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_202] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_202] at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_202] 帮我看下这个问题怎么解决
09-25
package com.tiger.biz.websocket; import lombok.extern.slf4j.Slf4j; import org.java_websocket.client.WebSocketClient; import org.java_websocket.drafts.Draft_6455; import org.java_websocket.handshake.ServerHandshake; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import javax.websocket.server.ServerEndpoint; import java.net.URI; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; /** * websocket的客户端 */ @Slf4j public class DemoWebSocketClient extends WebSocketClient { @Autowired private RedisTemplate<String, String> redisTemplate; public static final String HEARTBEAT_CMD = "此处为商定的保活命令"; public DemoWebSocketClient(URI serverUri) { super(serverUri, new Draft_6455()); } @Override public void onOpen(ServerHandshake serverHandshake) { //开启心跳保活 heartbeat(this); log.info("===建立连接,心跳保活开启==="); } @Override public void onMessage(String s) { log.info("{}时来自服务端的消息:{}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()), s); try { Map<Object, Object> map = redisTemplate.opsForHash().entries("zd:location"); System.out.println(map.size()+"dd"); } catch (Exception e) { e.printStackTrace(); } } @Override public void onClose(int a, String s, boolean b) { //重连 log.info("由于:{},连接被关闭,开始尝试重新连接", s); DemoReconnectThreadEnum.getInstance().reconnectWs(this); } @Override public void onError(Exception e) { log.error("====websocket出现错误====" + e.getMessage()); } /** * 心跳保活 * * @param var1 */ private void heartbeat(DemoWebSocketClient var1) { Schedul 改进以上代码怎么让 redistimplate正常注入 且URI serverUri不报错
05-30
package fn.server.controller; import fn.server.message.MessageStorageManager; import fn.server.message.SseConnectionManager; import fn.server.message.SseMessageService; import lombok.extern.slf4j.Slf4j; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import org.springframework.beans.factory.annotation.Autowired; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; @RestController @Slf4j @RequestMapping("/sse") public class SseController { @Autowired private SseConnectionManager connectionManager; @Autowired private MessageStorageManager storageManager; @Autowired private SseMessageService messageService; /** * 用户建立SSE连接 */ @GetMapping(value = "/connect/{userId}") public SseEmitter connect( @PathVariable String userId, @RequestParam(required = false) String companyId, HttpServletResponse response) { response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Type", "text/event-stream;charset=UTF-8"); SseEmitter emitter = new SseEmitter(TimeUnit.MINUTES.toMillis(60)); // 60分钟超时 ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); // 每30秒发送一次心跳 ScheduledFuture<?> heartbeatFuture = executor.scheduleAtFixedRate(() -> { try { emitter.send(SseEmitter.event().comment("heartbeat")); } catch (IOException e) { log.warn("Heartbeat failed for user {}: {}", userId, e.getMessage()); } }, 0, 30, TimeUnit.SECONDS); // 绑定用户连接 connectionManager.addEmitter(userId, companyId, emitter); // 发送初始数据 try { storageManager.sendPendingMessages(userId, messageService); emitter.send("中文信息".getBytes(StandardCharsets.UTF_8)); } catch (IOException e) { log.error("Initial data send failed for user {}: {}", userId, e.getMessage()); } // 连接完成或超时处理 emitter.onCompletion(() -> { heartbeatFuture.cancel(true); executor.shutdown(); connectionManager.removeEmitter(userId); }); emitter.onTimeout(() -> { emitter.complete(); connectionManager.removeEmitter(userId); }); return emitter; } @GetMapping("/logout/{userId}") public String logout(@PathVariable String userId) { try { // 断开用户的SSE连接 connectionManager.removeEmitter(userId); return "User " + userId + " logged out and connection closed."; } catch (Exception e) { e.printStackTrace(); return "Error while logging out user " + userId; } } } 这段代码老是报错2025-03-10 10:50:51.114 WARN 9328 --- [ol-102-thread-1] fn.server.controller.SseController : Heartbeat failed for user e82c24aa-d619-4754-8d56-ef58d48c028d: java.io.IOException: 你的主机中的软件中止了一个已建立的连接。
03-11
六自由度机械臂ANN人工神经网络设计:正向逆向运动学求解、正向动力学控制、拉格朗日-欧拉法推导逆向动力学方程(Matlab代码实现)内容概要:本文档围绕六自由度机械臂的ANN人工神经网络设计展开,详细介绍了正向与逆向运动学求解、正向动力学控制以及基于拉格朗日-欧拉法推导逆向动力学方程的理论与Matlab代码实现过程。文档还涵盖了PINN物理信息神经网络在微分方程求解、主动噪声控制、天线分析、电动汽车调度、储能优化等多个工程与科研领域的应用案例,并提供了丰富的Matlab/Simulink仿真资源和技术支持方向,体现了其在多学科交叉仿真与优化中的综合性价值。; 适合人群:具备一定Matlab编程基础,从事机器人控制、自动化、智能制造、电力系统或相关工程领域研究的科研人员、研究生及工程师。; 使用场景及目标:①掌握六自由度机械臂的运动学与动力学建模方法;②学习人工神经网络在复杂非线性系统控制中的应用;③借助Matlab实现动力学方程推导与仿真验证;④拓展至路径规划、优化调度、信号处理等相关课题的研究与复现。; 阅读建议:建议按目录顺序系统学习,重点关注机械臂建模与神经网络控制部分的代码实现,结合提供的网盘资源进行实践操作,并参考文中列举的优化算法与仿真方法拓展自身研究思路。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值