问题描述
我创建了一个代表用户会话的类,该用户会话每25秒将ping发送到另一个服务。为此,我在该课程中使用了scheduledexecutorservice
和ScheduledFuture
。
public class UserSession {
private scheduledexecutorservice scheduledexecutorservice;
private ScheduledFuture<?> keepAliveTask;
public UserSession() {
this.scheduledexecutorservice = Executors.newScheduledThreadPool(1);
this.keepAliveTask = scheduledexecutorservice.scheduleAtFixedrate(() -> {
this.sendPing();
},25L,TimeUnit.SECONDS);
}
.....
.....
}
现在的问题是,将有大约4000-5000个用户会话,因此将有4000-5000个UserSession
对象,每个对象都有其自己的scheduledexecutorservice
单线程。因此,如果我正确理解这一点,大约会有4000-5000个线程,每个线程负责发出相应会话的ping。
那么,JVM是否会处理那么多线程或scheduledexecutorservice
?我知道这取决于cpu,但这是个好主意吗?还是有更好的选择?