假设我们有个耗时操作,我们将会开启线程去执行这个耗时操作,那么该如何去判断这个线程中耗时操作已经执行完毕?
我们可以通过线程回调去获取判断,如下所示:
public class Test {
public static void main(String[] args) {
mThread mThread = new mThread(new Listener() {
public void active(int percent) {
printCurrentNum(percent);
}
});
mThread.start();
}
public static class mThread extends Thread{
private Listener listener;
public mThread(Listener listener) {
this.listener = listener;
}
@Override
public void run() {
int percent = 0;
//耗时操作
for (int i = 0; i<1000000000; i++) {
if(i%10000000==0){//每运行1%,返回百分比值
listener.active(++percent);
}
}
}
}
//此接口相用于监听回调结果
public interface Listener{
//此方法相当于回调因子
void active(int percent);
}
//打印进度条
private static void printCurrentNum(int percent){
System.out.print("\r");//将当前位置移到本行开头
//重画进度条
StringBuffer buffer = new StringBuffer();
buffer.append("运算中:"+percent+"%[");
for (int i = 0; i < 100; i++) {
if(i<percent){
buffer.append("■");
}else{
buffer.append(" ");
}
}
buffer.append("]");
System.out.print(buffer.toString());
}
}
运行结果如下:
运算中:100%[■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■]
进程已结束,退出代码0