我不知道下列事情是否可能。我想一個Runnable
的run()
方法包含Runnable
本身,即在Java中實現遞歸lambda函數
reconnects = 3;
Runnable executeAfter =() -> {
if (--reconnects < 0) {
println("%nStop using port %d.", this.port);
//...
} else { // try to reconnect
println("%nReconnecting...");
cmdRun = new CmdRun(command, executeAfter);
(new Thread(cmdRun)).start();
//...
}
};
是這樣甚至可能嗎?如果是這樣,怎麼樣? (CmdRun
的構造函數是CmdRun(String command, Runnable executeAfter)
)
這工作。非常感謝你。 – dotwin
儘管它有效,但是像遞歸地執行重試/重新連接等操作,並且在遞歸的每個級別中產生新的線程似乎都是錯誤的。考慮改變設計 –