[英]How to access variable update from another class
我有两种方法在一个线程中同时工作,并且我能够从 Loader class访问访问变量和计数器变量到 Load class 。
我想要的是当 while 循环在Loader class上更新时,以便能够访问Load class的更新,因为我想使用更新的变量。
可能吗? 如果是这样,我该怎么做?
class Loader extends Thread {
int access = 0;
int counter = 0;
public void run() {
while (access < 5) {
// System.out.println("Hello " + access);
System.out.println("counterA is " + counter);
access++;
counter++;
}
}
class Load extends Thread {
public void run() {
int me = 0;
Loader acc = new Loader();
Loader cou = new Loader();
int result = acc.access;
int counterB = cou.counter;
//cannot get the result and counterB outside a loop
if (counterB == 3) {
System.out.println("Access " + result);
System.out.println("counterB is " + counterB);
}
//cannot get the result and counterB inside a loop
while (me < 5) {
if (counterB == 3) {
System.out.println("Access " + result);
System.out.println("counterB is " + counterB);
}
me++;
}
}
}
class MyClass {
public static void main(String[ ] args) {
Loader obj = new Loader();
Load o = new Load();
obj.start();
o.start();
}
}
如果您想从Load
class 中访问Loader
class 的字段,您需要在Load
object 中引用Loader
objectCBC2BBB4CBB4. 您可以通过将Loader
object 传递给Load
object 的构造函数或使用设置器等来实现此目的。
在上面的代码中,您在Load
类的run
方法中创建了两个新的Loader
对象,并且没有启动它们中的任何一个,因此这两个Loader
对象的access
和counter
字段将始终为零。 此外,我不知道这是否是一个错误,但result
和counterB
变量不会存储对字段的引用,而是存储字段值的副本。
此外,为了防止memory 一致性错误,您应该使用同步或原子变量(在您的情况下为AtomicInteger )。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.