gpt4 book ai didi

Java 线程 - 通过另一个线程调用方法来阻止一个线程运行

转载 作者:行者123 更新时间:2023-11-29 08:07:58 27 4
gpt4 key购买 nike

我正在编写一个 Runnable 类。在它里面,我有两种方法。 run() 方法和另一个称为 stopRunning() 的方法。 stopRunning() 将由与运行 run() 方法的线程不同的线程调用,并停止运行 run() 方法的线程运行。

这是一个代码片段:

public class myRunnable implements Runnable
{
private boolean stillRunning = true;

public void stopRunning()
{
synchronized (this)
{
stillRunning = false;
}
}

public void run()
{
while (stillRunning)
{
synchronized (this)
{
// do some stuff that doesn't involve the isPlaying var
}
}
}

这段代码看起来正确吗?我是否需要同步以确保运行 run() 方法的线程能够识别 isPlaying 的变化?

此外,我是否需要在此处的任何地方调用 notify() 或 notifyAll() 才能正常工作?我很确定我没有,因为我从未调用过 wait(),但我不是 100% 确定。

编辑:糟糕,我的代码错了。我为 boolean 值使用了错误的名称,对此感到抱歉。现在已经修好了。

最佳答案

对于启动和停止线程,Java Thread API已经提供了您正在寻找的功能。 Thread.interrupt()Thread.interrupted() 可以用来实现你想要的。

public class MyThread extends Thread{
public void run(){
while(!interrupted()){
try{
// Place your code here
}catch(InterruptedException e){
break;
}
}
}
}

每当你想中断 MyThread 只需调用 MyThread.interrupt()

关于Java 线程 - 通过另一个线程调用方法来阻止一个线程运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9863281/

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