gpt4 book ai didi

java - 如何在Runnable中更新变量?

转载 作者:行者123 更新时间:2023-12-03 13:19:27 27 4
gpt4 key购买 nike

我试图创建一个可运行的Runnable,但是我需要从外部对变量进行更改,以暂停或恢复Runnable正在进行的工作。

这是我的Runnable实现:

private boolean active = true;


public void run() {
while (true) {
if (active) { //Need to modify this bool from outside
//Do Something
}
}
}

public void setActive(boolean newActive){
this.active = newActive;
}

在我的主类,我调用:
Thread thread = new Thread(myRunnable);
thread.run();
myRunnable.setActive(false); //This does not work!!!
//The boolean remains true inside myRunnable.

我已经尝试在 Activity 状态下使用“volatile”修饰符,但仍不会更新。任何想法都将不胜感激。

最佳答案

Thread thread = new Thread(myRunnable);
thread.run();
myRunnable.setActive(false);

第三行仅在run()方法返回后执行。您正在按顺序在单个线程中执行所有操作。第二行应该是
thread.start();

而且该领域应该是易变的。

但是请注意,将active字段设置为false将使线程进入忙碌循环,什么也不做,而是通过不断循环来消耗CPU。您宁可使用锁来等待,直到可以恢复。

关于java - 如何在Runnable中更新变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36189462/

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