gpt4 book ai didi

java - 如何在Thread中的run()方法中访问公共(public) boolean 变量

转载 作者:行者123 更新时间:2023-12-01 08:10:46 25 4
gpt4 key购买 nike

如何在run()方法中访问变量boolean check_point值?

public class Transciever {

public boolean check_point = true;

public void run() {

while (true) {

System.out.println("before client listening...");
socket = serverSocket.accept();
System.out.println("after socket accept");
check_point = false;
}
}
}

我无法从 run() 方法更改变量 boolean check_point 的值,但我可以访问其他正常方法。

最佳答案

我认为您正在尝试访问线程外部的 check_point 方法。首先,Transciever 不是线程,因为您还没有实现 runnable 方法。您需要一个 getter 方法,以便其他类能够获取标志,并且不需要线程实例来获取值,您需要保留 Transciever 类实例所以应该是这样的。

class Main{
public static void main(String...arg){
Transciever t=new Transciever();
new Thread(t).start();
//......
//......
boolean flag=t.getFlag();
}
}

public class Transciever implements Runnable{
private volatile boolean check_point = true;
public boolean getFlag(){ return this.check_point;}
@Override
public void run() {
while (true) {

System.out.println("before client listening...");
socket = serverSocket.accept();
System.out.println("after socket accept");
check_point = false;
}
}
}

另一个例子here

关于java - 如何在Thread中的run()方法中访问公共(public) boolean 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17572438/

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