普通使用
Task<Void> task = new Task<Void>() {
@Override
protected void succeeded() {
super.succeeded();
//當call方法里面的操作完成,回調
}
//還可以自定義一些方法,之后可以在call等方法調用
@Override
protected Void call() throws Exception {
//后台操作
return null;
}
};
new Thread(task).start();//啟動線程
進度條更新
Task<Void> task = new Task<Void>() {
@Override
protected void succeeded() {
super.succeeded();
//當call方法里面的操作完成,回調
}
//還可以自定義一些方法,之后可以在call等方法調用
@Override
protected Void call() throws Exception {
//模擬一個下載操作
for(int i=0;i<100;i++){
Thread.sleep(100);
//第一個參數是已完成,第二個參數則是全部,會自動計算
updata(i,100);
}
return null;
}
};
ProgressBar bar = new ProgressBar();
bar.progressProperty().bind(task.progressProperty());
//這里可以選擇在一個按鈕的點擊事件中開啟線程
new Thread(task).start();
暫停/繼續功能實現
思路,在controller中,存在一個boolean變量,用來判斷當前是否已暫停,點擊暫停按鈕,會修改此boolean變量,默認為fasle
之后,在線程里面實現一個while循環,每次通過之前的boolean變量來確定是否執行
Task<Void> task = new Task<Void>() {
@Override
protected Void call() throws Exception {
int i=0;
while (i<100) {
//不是暫停,執行
if (!isPause) {
updateProgress(i, 100);
i++;
}else{
Thread.sleep(10);//這里如果沒有,線程暫停之后就無法繼續執行了
}
}
return null;
}
};
