Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的停止按钮暂停所有线程,而不是暂停特定线程_Java_Multithreading_Javafx - Fatal编程技术网

Java 我的停止按钮暂停所有线程,而不是暂停特定线程

Java 我的停止按钮暂停所有线程,而不是暂停特定线程,java,multithreading,javafx,Java,Multithreading,Javafx,我有Class1[]QR在myClass2.java中定义 其中Class1是一个不同的类,它扩展了任务,我正在那里做一些事情 我在Class2中定义了以下变量,如下所示: public class Class2 implements Initializable { private ProgressBar[] prog_QR; private Label[] lab_QR; public Button[] stop_QR; public Class1[] QR; public boolean

我有
Class1[]QR在my
Class2.java中定义

其中Class1是一个不同的类,它扩展了
任务
,我正在那里做一些事情

我在Class2中定义了以下变量,如下所示:

 public class Class2 implements Initializable {

private ProgressBar[] prog_QR;
private Label[] lab_QR;
public Button[] stop_QR;
public Class1[] QR;
public boolean RunningQRState;
ExecutorService QueueReaderExecutorService;

@Override
public void initialize(URL url, ResourceBundle rb) 
{
    QR = new ResultsReader[10];

    prog_QR = new ProgressBar[10];
    lab_QR = new Label[10];
    stop_QR = new Button[10];

    for(int i=0; i<10; i++)
    {
        prog_QR[i] = new ProgressBar();
        stop_QR[i] = new Button();
        stop_QR[i].setText("Stop");

        lab_QR[i] = new Label("Thread " + i);

    // more stuff   
    }
    @FXML
   private void act_Start(ActionEvent event) 
   {

     if(RunningQRState)
     {

     RunningQRState = false;
     }
     else
     {

     RunningQRState = true;

     // Set up thread pool
        QueueReaderExecutorService = Executors.newFixedThreadPool(10);

        for(int i=0; i<10; i++)
        {
            QR[i] = new Class1(i);

            prog_QR[i].progressProperty().bind(QR[i].progressProperty());
            lab_QR[i].textProperty().bind(QR[i].messageProperty());
            //stop_QR[i].textProperty().bind(QR[i].messageProperty());// By AK

             stop_QR[i].setOnAction(new EventHandler<ActionEvent>()
              {
                @Override
                public void handle(ActionEvent event)
                  {
                        System.out.println("Stop Button number Clicked");

                        try
                             {
                                Thread.sleep(5000);
                                }
                      catch (InterruptedException interrupted)
                         {
                            if (isCancelled())
                            {
                                System.out.println("QRC Cancelled");
                             }
                        }
                   }

                private boolean isCancelled() {
                    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
                }
            });

            //QR[i].setQDVC(this);

            QueueReaderExecutorService.execute(QR[i]);
        }
    }
公共类Class2实现了可初始化{
私人ProgressBar[]程序;
自有品牌[]实验室;
公共按钮[]停止按钮;
公共1类[]QR;
公共布尔运行状态;
ExecutorService QueueReaderExecutorService;
@凌驾
公共void初始化(URL、ResourceBundle rb)
{
QR=新结果阅读器[10];
prog_QR=新进度条[10];
lab_QR=新标签[10];
停止按钮=新按钮[10];
对于(int i=0;i
  • 您的任务实现是做什么工作的?请提供更多代码或信息
  • 使用如何?您可以通过ExecutorServicesubmit(task)方法调用来获得它,而不是execute(task),后者不提供任务完成契约。Future可能会随时取消基础任务。我想这就是您正在搜索的。希望这对您有所帮助