在 Java 中,我们可以使用 new Thread(Runnable r) 轻松创建一个新线程。但是,这使用了我们本地机器上的线程。
有没有办法连接到另一台机器(通过 ssh)并在该机器上的新线程上运行函数?
在 Java 中,我们可以使用 new Thread(Runnable r) 轻松创建一个新线程。但是,这使用了我们本地机器上的线程。
有没有办法连接到另一台机器(通过 ssh)并在该机器上的新线程上运行函数?
有没有办法连接到另一台机器(通过 ssh)并在该机器上的新线程上运行函数?
最简洁的答案是不。有许多SSH 的 Java 实现允许您在另一个系统上登录和运行命令。这意味着您可以在另一个系统上运行另一个 Java (JVM) 实例。您可以在本地线程中运行此远程命令,但不能在远程系统上派生“线程”。
长答案是,还有许多其他远程操作的方法,这通常意味着在远程机器上运行某种服务器,接收请求并返回响应。然后有许多方法可以加密远程协议。通过 HTTP 到 Web 服务器的 SSL 请求是一种机制。 基于 SSL 的 RMI是另一个。
您可以使用 Java RMI 在另一台机器上运行代码。我从来没有这样做过,但显然你可以通过 SSH 做到这一点。
我使用亚马逊的简单队列服务实现了与此类似的东西——machine1 通过队列发送 Runnables(用Jackson序列化),然后在 machine2 上提取并执行。Simple Queue Service 有一个供小规模使用的免费层,但有很多开源消息传递库/程序,例如HornetQ或RabbitMQ。