Michał Piątkowski
Michał Piątkowski

Reputation: 363

Reference to proper instance of object volatile variable

How ClassThread can access to variable var from instance of Class1 that created this ClassThread instance?

ClassThread

public class ClassThread implements Runnable {
    @Override
    public void run() {

    }
}

Class1

public class Class1 implements Runnable{

    public volatile String var;

    public Class1() {

    }

    @Override
    public void run() {
        for(int i = 0; i < 5; i++){
            ClassThread ct = new ClassThread();
            Thread t = new Thread(ct);
            t.start();
        }
    }

}

Main

public class Main{
    public static void main(String[] args) {
        for(int i = 0; i < 3; i++){
            Class1 cla = new Class1();
            Thread t = new Thread(cla);
            t.start();
        }
    }
}

Upvotes: 0

Views: 62

Answers (1)

Andrew Williamson
Andrew Williamson

Reputation: 8661

Take it as an argument in the constructor:

public class ClassThread implements Runnable {
    private volatile String var;

    public ClassThread(String var) {
        this.var = var;
    }

    @Override
    public void run() {

    }
}

And in Class1, pass it in when you construct the ClassThread:

@Override
public void run() {
    for(int i = 0; i < 5; i++){
        ClassThread ct = new ClassThread(var);
        Thread t = new Thread(ct);
        t.start();
    }
}

Upvotes: 1

Related Questions