javafx-更新ui使用多线程

本文介绍了在JavaFX中如何使用Task和Service进行UI线程的更新,以避免界面卡顿无响应。Task适用于一次性任务,而Service则支持启动、暂停和重复使用。当遇到UI更新导致的卡顿问题时,文章提供了三种解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

更新UI线程

在javafx中,线程分为Task,service,和Runable,

thread是java中的线程,不能直接用于javafx中,javafx的线程就剩下了task和service。

task是继承自Runable的类,这个线程是一次性的线程,启动,执行完毕,回收,一次执行完成即结束,如果在需要重复使用的线程,就不能使用这个。

service 是爹类,,实现了Worker接口,在service中,线程可以启动,暂停,可重复使用,

当更新ui时,界面卡住无响应,可以参考如下方法尝试:
方法一:

loading=new Thread(()->{
   

                Platform.runLater(()->{
   
                    detail.setText("loding .gz file success"+"\n");
                    filename.setText("文件名:" + file.getName());
                    filepath.setText("文件位置:" + file.getAbsolutePath());
                    filesize.setText("文件大小:" + (file.length() / 1024) / 1024 + "M");
                    // detail.setText(unCompressUtils.progressText);

                    processor.setVisible(true);
                    cancelbutton.setDisable(false);

                });

                try {
   
                    unCompressUtils.unOne(file.getAbsolutePath());
                } catch (InterruptedException e) {
   
                    e.printStackTrace();
                }<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值