如何在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/