public class ProgressBarUtil extends Thread{
public static AtomicInteger PROGRESS = new AtomicInteger(0);
public static Long TOTAL = 1000L;
private String remindText = "进度";
public ProgressBarUtil() {
}
public ProgressBarUtil(String remindText) {
this.remindText = remindText;
}
public static Thread begin(){
PROGRESS.set(0);
ProgressBarUtil progressBarUtil = new ProgressBarUtil();
progressBarUtil.start();
return progressBarUtil;
}
public static Thread begin(String remindText){
ProgressBarUtil progressBarUtil = new ProgressBarUtil(remindText);
progressBarUtil.start();
return progressBarUtil;
}
@Override
public void run() {
showBar();
}
public void showBar(){
while (true){
int progress = PROGRESS.get();
String showRemindText = remindText + ": " + progress + "/" +TOTAL;
if (progress == TOTAL){
System.out.print(showRemindText);
break;
}
System.out.print(showRemindText);
sleep(500);
clearPrevShow(showRemindText);
}
}
private static void clearPrevShow(String text){
String remove = getRemove(text);
if (remove != null && remove != ""){
System.out.print(remove);
}
}
private static String getRemove(String text){
if (text == null || text == ""){
return "";
}
return getRemove(text.length());
}
private static String getRemove(Integer i){
i+=4;
StringBuilder stringBuilder = new StringBuilder();
for (Integer integer = 0; integer < i; integer++) {
stringBuilder.append("\b");
}
return stringBuilder.toString();
}
public static void sleep(long millis){
try {
Thread.sleep(millis);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new Thread(() -> {
for (int i = 0; i < 500; i++) {
PROGRESS.incrementAndGet();
sleep(10);
}
}).start();
new Thread(() -> {
for (int i = 0; i < 500; i++) {
PROGRESS.incrementAndGet();
sleep(5);
}
}).start();
new ProgressBarUtil().start();
sleep(500000);
}
}
Java 窗口程序 进度显示工具
最新推荐文章于 2024-09-26 11:22:21 发布