gpt4 book ai didi

java - 影响Java中不同类中的变量

转载 作者:行者123 更新时间:2023-12-02 13:29:18 24 4
gpt4 key购买 nike

作为一个例子,我有两个类试图操纵一个变量

public class A {

public static void main(String[] args) {

while(game_over[0] == false) {
System.out.println("in the while-loop");
}
System.out.println("out of the while-loop");
}

static boolean[] game_over = {false};
}

public class B {

public boolean[] game_over;

public printBoard(boolean[] game_over) {

this.game_over = game_over;
}

public void run() {

for (int i = 0; i < 10; i++) {
// do something
}
game_over[0] = true;
System.out.println("GAME OVER");
}
}

提供的代码片段并不意味着是实际可行的代码,我更关心这个概念。在我的程序中,类 A 创建一个利用类 B 的线程,并且我希望类 B 影响变量“game_over”,以便类 A 中的 while 循环将受到更改的影响......知道我如何成功更新变量?谢谢。

最佳答案

不要为此使用数组,这会使确保无数据争用的应用程序变得更加困难。

由于您希望能够将 game_over 标志作为独立对象传递,因此实现正确的多线程应用程序的最简单方法是使用 AtomicBoolean类。

import java.util.concurrent.atomic.AtomicBoolean;

class B {
private AtomicBoolean game_over;

public B(AtomicBoolean game_over) {
this.game_over = game_over;
}

public void run() {
// do stuff
game_over.set(true);
}
}

在你的A类:

public class A {
static AtomicBoolean game_over = new AtomicBoolean();

public static void main(String[] args) {
B b = new B();
Thread t = new Thread(b);
t.start();

while (!game_over.get()) {
System.out.println("in the while-loop");
}
System.out.println("out of the while-loop");
}
}

关于java - 影响Java中不同类中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43245666/

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