Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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 - Fatal编程技术网

Java 无法使用和停止线程

Java 无法使用和停止线程,java,multithreading,Java,Multithreading,我从最后一个问题中得到了一个答案。但现在,我无法使用和停止线程后一分钟刚刚完成我的事情。实际上,我想在完成任务一分钟后关闭/停止线程。因此,我非常困惑:如何使用: public class Frame2 extends javax.swing.JFrame implements Runnable{ public Frame2() { initComponents(); } public void run(){ long startTime

我从最后一个问题中得到了一个答案。但现在,我无法使用和停止线程后一分钟刚刚完成我的事情。实际上,我想在完成任务一分钟后关闭/停止线程。因此,我非常困惑:如何使用:

public class Frame2 extends javax.swing.JFrame implements Runnable{
    public Frame2() {
        initComponents();
    }

    public void run(){
        long startTime = System.currentTimeMillis();
        while (( System.currentTimeMillis() - startTime ) < 1000) {        
            System.out.print("DOING MY THINGS");
        }
    }
}
在无限循环中工作

提前谢谢

当我关闭包含此线程的框架时

框架不包含线程。框架可以有对它的引用。但是线程本身将一直运行,直到它的执行完成(
run
method结束),并且一秒也不会少

你不能只是“停止”线程。它必须始终完成它的执行(再次,
运行
方法结束)

您编写的代码应该运行良好,并在60秒内停止编写内容。如果希望它在关闭帧时终止,则应添加一些变量以进行检查,并在希望线程终止时向其写入
true

例如:

private volatile boolean terminated = false;

public void run(){
  long startTime = System.currentTimeMillis();
  while (!terminated && System.currentTimeMillis() < startTime + 60000) {
    System.out.print("DOING MY THINGS");
    // here I want to do my things done in just one minute
    // and after that I want to stop the thread at will!
  }
}

public void stop() {
  terminated = true;
}
private=false;
公开募捐{
long startTime=System.currentTimeMillis();
而(!已终止&&System.currentTimeMillis()
当我关闭包含此线程的框架时

框架不包含线程。框架可以有对它的引用。但是线程本身将一直运行,直到它的执行完成(
run
method结束),并且一秒也不会少

你不能只是“停止”线程。它必须始终完成它的执行(再次,
运行
方法结束)

您编写的代码应该运行良好,并在60秒内停止编写内容。如果希望它在关闭帧时终止,则应添加一些变量以进行检查,并在希望线程终止时向其写入
true

例如:

private volatile boolean terminated = false;

public void run(){
  long startTime = System.currentTimeMillis();
  while (!terminated && System.currentTimeMillis() < startTime + 60000) {
    System.out.print("DOING MY THINGS");
    // here I want to do my things done in just one minute
    // and after that I want to stop the thread at will!
  }
}

public void stop() {
  terminated = true;
}
private=false;
公开募捐{
long startTime=System.currentTimeMillis();
而(!已终止&&System.currentTimeMillis()
看看这个线程-initComponents做什么?它不是JFrameAPI的一部分。你曾经使用过NetBeans吗?我没有。在这种情况下,它是某些NetBeans API的一部分。无论如何,只要用
新线程(this.start()
手动启动线程就可以了。看看这个线程-initComponents做什么?它不是JFrameAPI的一部分。你曾经使用过NetBeans吗?我没有。在这种情况下,它是某些NetBeans API的一部分。无论如何,只需使用
新线程(this).start()
手动启动线程。实际上,当我启动线程时,system.out命令不起作用,当我单击JFrame close按钮时,线程将停止以无限循环的方式执行system.out.print命令。然后我们需要查看更多代码,错误在其他地方。线程本身看起来很正常。实际上,当我启动线程时,system.out命令不起作用,当我单击JFrame close按钮时,线程停止在无限循环中执行system.out.print命令。然后我们需要查看更多代码,错误在其他地方。这根线本身看起来很好。