本文展示一個實用的 Bash 腳本範例,用於批量初始化賬戶數據。雖然標題提到「Java 掌握線程運轉」,但實際內容是一個 Shell 腳本,通過分批次調用 Java 程式來實現大量數據的並發處理。
腳本每次遞增 500 條記錄,調用 sym init:account-data 命令處理指定範圍的數據。這種分批處理方式避免了單次處理過大數據量導致的內存溢出或超時問題。
#!/bin/bash
#
# 每次遞增的數量
ADD_NUM=500
# 遞增 1 的話取消下行註釋,並相應修改另一句 for 的開頭的
# for ((i=1;i<=29500;i++))
# 遞增定義的數量
for ((i=1;i<=29500;i=$i+$ADD_NUM))
do
E=`expr $i + $ADD_NUM`
./sym init:account-data --start-at=$i --end-at=$E
done
ADD_NUM=500:每批處理的記錄數,可根據系統性能調整i<=29500:總記錄數上限--start-at 和 --end-at:傳遞給 Java 程式的起始和結束位置參數此方案適用於:大量歷史數據遷移、定時批量任務、系統初始化數據導入等場景。生產環境建議增加:執行狀態日誌記錄、失敗重試機制、並發控制(如使用 xargs -P 或 GNU Parallel)、執行時間監控告警。
對應的 Java 程式需支持 --start-at 和 --end-at 參數,在 main 方法中解析參數並啟動相應線程池處理指定範圍數據,實現真正的多線程並行處理。