Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Conversion of AtomicInteger to int

I wrote a thread and for memory synchronization I have to use Atomicinteger. Here is my code:

public class NewClass implements Runnable {

public double rr;
public double rmse_new;
public double rmse_newT;
private int k;
private int[][] Xdisc;

public NewClass(int Xdisc[][], double[][] pat_cand, int k, double[][] Yresid, double[][] Xresid) {

    this.k = k;
    this.Xdisc = Xdisc;
}

@Override
public void run() {
    final AtomicInteger q = new AtomicInteger(0);
    q.set(0);
    while (true) {
        if (q.incrementAndGet() >= Xdisc.length) {
            break;

            Integer[] temp_X;
            temp_X = new Integer[Xdisc[0].length];
            for (int s = 0; s < Xdisc[0].length; s++) {
                temp_X[s] = Xdisc[q][s];
            }
        }
    }
}
}

the problem is that q is the row index of a 2D array Xdisc (in main class) and apparently should be integer but in NewClass, q is AtomicInteger. Therefore I got this error:

incompatible types
required: int
found: AtomicInteger

in this line

temp_X[s] = Xdisc[q][s];

and I even tried

temp_X[s] = Xdisc[(int)q][s];

and got this error:

inconvertible types

Is there anyway to convert AtomicInteger to int?

like image 631
MTT Avatar asked Oct 25 '25 10:10

MTT


2 Answers

If you're trying to use the same value throughout the loop, just use the return value of incrementAndGet():

int index = q.incrementAndGet();
if (index >= Xdisc.length) {
    break;
} // I'm assuming you meant there to be a brace here...

Integer[] temp_X;
temp_X = new Integer[Xdisc[0].length];
for (int s = 0; s < Xdisc[0].length; s++) {
    temp_X[s] = Xdisc[index][s];
}

If you want the absolute latest value, use get().

like image 58
Jon Skeet Avatar answered Oct 26 '25 23:10

Jon Skeet


Please use:

AtomicInteger x = new AtomicInteger();
int result = x.intValue();
like image 42
Roman Motovilov Avatar answered Oct 26 '25 23:10

Roman Motovilov



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!