gpt4 book ai didi

java - 不能 .stop() .wait() 或以任何方式停止线程

转载 作者:行者123 更新时间:2023-11-30 08:02:44 25 4
gpt4 key购买 nike

我在停止使用 JButton 上的 actionPerformed 从类外部启动的线程时遇到了麻烦。下面线程类的代码。

public synchronized void run ()
{
try
{
do
{
int minuta = vrijeme / 60;
int sekundi = vrijeme % 60;

System.out.println(minuta+" "+sekundi);

vrijeme = vrijeme - 1;
delay = delay - 1000;

if (minuta == stani && sekundi == 0)
{

}



try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
while (delay != 0);
{
//
}
}
catch (Exception e)
{
System.out.println("Stao" + e);
}
}
void pokreniThread()
{
(new Thread(new OdredenoVrijeme())).start();
}
synchronized public void zaustaviThread()
{
try
{
(new Thread(new OdredenoVrijeme())).wait();
}
catch (Exception e)
{
System.out.println("stao" +e);
}
}

每次我调用 .sleep() .wait() 或任何类似的东西时,我都会收到以下捕获消息:

java.lang.IllegalMonitorStateException

最佳答案

在 Java 下,您不能在主进程中 hibernate 。创建一个子线程,它将执行 sleep ,然后将消息发布到主线程中的处理程序,以在超时后执行某些操作。

如果你想停止一个线程本身,在线程内部设置一个变量,比如is_stopping=true,然后在线程内部你可以在线程自己停止后设置一个变量is_running=false。

is_running=true;
while (is_running & !is_stopping)
{
do_something();
sleep();
}
is_stopping=false;
is_running=false;

关于java - 不能 .stop() .wait() 或以任何方式停止线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36680492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com