【发布时间】:2017-07-02 12:08:37
【问题描述】:
我有一个需要多次运行的 Java 应用程序。每次运行时,它都会检查是否有要处理的数据,如果有,则处理数据。
我正在尝试找出执行此操作的最佳方法(性能、资源消耗等):
1.- 启动一次,如果没有要处理的内容,让它休眠(全 Java)。
2.- 使用 bash 脚本启动 Java 应用程序,完成后,休眠(脚本)然后重新启动 Java 应用程序。
我想知道是否最好让 Java 应用程序保持活动(休眠)或每次都重新启动。
【问题讨论】:
-
视情况而定。算法等需要多长时间,需要多少资源...您是否准备好croning,调度基础设施等...什么是广泛的生态系统,资源应该被锁定(必须与其他资源竞争)等
-
每种可能性各有利弊...例如启动时间与复杂性。
-
@JacekCz 你好。目前,它被部署为第二种方法。有几个应用程序(约 30 个)遵循相同的结构(用于启动和重新启动的 Bash 脚本)并使用 cron 来启动它们。每个程序花费的时间取决于要处理的数据量,但可能从几秒到几小时不等。
-
考虑把你的线程放到wait()而不是sleep()释放你线程的锁,以免因阻塞而浪费资源
-
您应该知道 cron 并不关心上一次运行是否完成,因此您最好确保没有两个程序实例试图处理相同的输入数据 - 请参阅这里:stackoverflow.com/questions/14409651/…
标签: java bash performance