我有一個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