我有一个Java程序执行一些大型分析任务,在一个线程中运行一个循环(基本上是24/7)并访问许多其他线程来执行并行处理。我目前正在配置其他活动线程的数量,以便使用常量发送任务。在白天,我喜欢将其设置为较小的值(例如4),以使我的某些机器资源可用于交互式使用。隔夜(或其他时间,我离开我的机器无人看管)我希望程序使用更多的线程(比如8)。目前我正在停止程序,改变常量,重建和重新启动程序(我必须重新启动所有8个线程)。定期做这件事变得乏味。从正在运行的进程外部更改Java变量的值
我想建立一个简单的系统,从外部Java输入一个命令/脚本来改变程序的行为,以便它可以保持运行,但会根据我的输入改变空闲线程的数量。我已经搜索了答案,并知道这显然不可能与一个环境变量。我可以想到两种可能性:在文本文件中设置一个值并在循环的每个循环中读取它;并将值存储在我的程序与之交互的MySQL数据库中。
虽然这些解决方案对我很有用,但我有兴趣知道是否有任何其他(更标准的)方法让Java“配置变量”可以从运行过程的外部访问。
如果相关,我从Eclipse内运行进程。
编辑:只是想到了另外一个可能性:USR1和USR2信号...
是的,文件监控/读取是我已经倾向于的解决方案,但希望减少某些问题。 JMX看起来很整洁,但可能矫枉过正,这只是个人的便利。 – 2012-02-18 06:13:31
Spring框架使得JMX在通过注释实现时相当简单,比如@ManagedResource – GreyBeardedGeek 2012-02-18 16:17:06