繁体   English   中英

如何从另一个 class 访问变量更新

[英]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对象的accesscounter字段将始终为零。 此外,我不知道这是否是一个错误,但resultcounterB变量不会存储对字段的引用,而是存储字段值的副本。

此外,为了防止memory 一致性错误,您应该使用同步原子变量(在您的情况下为AtomicInteger )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM