无名商城论坛

搜索
查看: 341|回复: 0

[其他技术] 【HC】多线程循环(Java)

[复制链接]

1万

主题

1万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
32464
发表于 2022-5-8 18:41:19 | 显示全部楼层 |阅读模式
在javafx中,线程分为Task,service,和Runable,

thread是java中的线程,不能直接用于javafx中,原因请看我之前写的博客,
本帖隐藏的内容需要【资源会员】才可浏览,您需要升级才可浏览,点击这里升级【资源会员】

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

service 是爹类,(我忘了abstract是什么来着),实现了Worker接口,在service中,线程可以启动,暂停,可重复使用,



下面是一个demo,实现了循环闹钟

package test.javfxlandingThread;

import javafx.application.Application;
import javafx.concurrent.Service;
import javafx.concurrent.Task;
import javafx.geometry.Pos;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ProgressBar;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.stage.Stage;
import org.fxmisc.richtext.InlineCssTextArea;

public class ProgressSample3 extends Application {

    int num = 0;
    int num1 = 1 * 100;//这是是需要设置的时间,现在是1秒
    int num2 = 3 * 100;//下个循环的时间,现在为3秒
    boolean flag = true;

    Service service = new Service() {
        @Override
        protected Task createTask() {

            return new Task() {
                @Override
                protected Integer call() throws Exception {
                    int i = 0;
                    num = num1;

                    while (flag) {
                        updateProgress(i++, num);
                        Thread.sleep(10);
                        if (i == num) {
                            if (num == num1) {
                                i = 0;
                                num = num2;
                            } else {
                                i = 0;
                                num = num1;
                            }
                        }
                    }
                    return null;
                }
            };
        }
    };

    @Ove
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表