如何在 Java 中始终在 运行 中保留一段代码 ubuntu/centOS?
How do I keep a piece of code in Java always running on ubuntu/centOS?
我写了一些 Java 代码(使用交互式经纪人 API)每 50 毫秒轮询一次期货定价,当它处于我喜欢的情况时,它将购买或出售 X 份合约,等等
Timer t = new Timer( );
t.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
// get pricing, look for situational stuff
}
}, 0, 50);
但是,我不知道如何编写代码以正确地使程序始终 运行 在后台运行。如果重要的话,我正在 OS X 上开发它,生产环境可以是 ubuntu 或 centOS
一个 java 程序将 运行 直到最后一个非守护线程停止或您调用其中一个停止方法(如 System.exit(0))。由于您的计时器不是守护程序,因此它将永远 运行。如果你有一个 window,那么它也有一个线程。
由于您可能已连接到 IB,EReader 会创建一个非守护线程以从套接字读取数据。您必须断开连接才能停止此线程。
更好的选择是订阅市场数据并在收到新数据时做一些事情。请注意,50 毫秒对于请求数据来说太快了,因为无论如何 IB 每秒只更新几次。
我写了一些 Java 代码(使用交互式经纪人 API)每 50 毫秒轮询一次期货定价,当它处于我喜欢的情况时,它将购买或出售 X 份合约,等等
Timer t = new Timer( );
t.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
// get pricing, look for situational stuff
}
}, 0, 50);
但是,我不知道如何编写代码以正确地使程序始终 运行 在后台运行。如果重要的话,我正在 OS X 上开发它,生产环境可以是 ubuntu 或 centOS
一个 java 程序将 运行 直到最后一个非守护线程停止或您调用其中一个停止方法(如 System.exit(0))。由于您的计时器不是守护程序,因此它将永远 运行。如果你有一个 window,那么它也有一个线程。
由于您可能已连接到 IB,EReader 会创建一个非守护线程以从套接字读取数据。您必须断开连接才能停止此线程。
更好的选择是订阅市场数据并在收到新数据时做一些事情。请注意,50 毫秒对于请求数据来说太快了,因为无论如何 IB 每秒只更新几次。