无名 发表于 2022-5-8 18:41:19

【HC】多线程循环(Java)

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

thread是java中的线程,不能直接用于javafx中,原因请看我之前写的博客,https://blog.csdn.net/qq_41886200/article/details/102484993,javafx的线程就剩下了task和service,

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
http://cdn.u1.huluxia.com/g3/M01/36/FD/wKgBOV3H3wSAEbxjAAB7c6R6rKQ625.jpg
页: [1]
查看完整版本: 【HC】多线程循环(Java)