Java开发桌面程序学习(13)——Javafx多线程 下载功能
2023-02-18 16:36:36 时间
普通使用
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;
}
};
相关文章
- 关于“构造函数”中的几个小问题,也许面试会问到哦~
- 关于“参数”的几个问题,也许面试会问到哦~
- 关于“属性”的几个问题,也许面试会问到哦~
- const,readonly 这些你真的懂吗? 也许会被面试到哦。。。
- 可空类型为什么可以为空?也许会被面试到哦。。。
- 面试中可能会被问到的几个关于“委托”的问题
- 玩玩小爬虫——抓取动态页面
- 基于webgl(threejs)的路面编辑
- 通过canvas计算任意两个颜色的插值
- 给面试者的一点建议
- YoloV5实战:手把手教物体检测
- 详解CNN实现中文文本分类过程
- 使用污点分析检查log4j问题
- 带你掌握Visual Studio Code的格式化程序
- 云图说|分布式事务管理DTM:“买买买”背后的小帮手
- 用户登录功能:说简单也困难
- 手写一个线程池,带你学习ThreadPoolExecutor线程池实现原理
- 动态加载不适合数组类?那如何动态加载一个数组类?
- 一文详解Kafka API
- 语义级代码克隆检测数据集的评估与改进