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命令。然后我们需要查看更多代码,错误在其他地方。这根线本身看起来很好。