这是我正在尝试做的一个简单的玩具示例。
我有一个实现方法的 WebSocket 类onClose()。当 Socket 关闭时,它会触发事件处理程序(lambda 函数)。
public class WebSocket {
ICallback cb;
public WebSocket(ICallback cb) {
this.cb = cb;
this.onClose(); // Simulating socket closing
}
public void onClose() {
this.cb.handle();
}
@FunctionalInterface
public static interface ICallback {
public abstract void handle();
}
}
在父类中,我创建了此类的一个新实例。当套接字关闭时,我必须重新创建此类的新实例。(旧的不能用)
这是我的实现
class Parent {
static WebSocket socket;
public static void main(String[] args) {
Parent.createSocket();
}
public static void createSocket() {
Parent.socket = new WebSocket(() -> { Parent.createSocket(); });
}
}
此代码有效
但是每当onClose()被触发时,一个新的帧就会被添加到堆栈中。
WebSocket在不增加堆栈大小的情况下重新创建对象的最佳模式是什么?
运行一个不断检查套接字状态的线程是否是一种可行的方法?IE:
while(socket.isOpen()) {
Thread.sleep(1000);
}
createSocket();
30秒到达战场
相关分类