Java开发桌面程序学习(13)——Javafx多线程 下载功能

普通使用

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;
    }
};

转载于:https://www.cnblogs.com/kexing/p/11264196.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值