I am wondering if it is possible to avoid the lost update problem, where multiple threads are updating the same date, while avoiding using `synchronized(x) { }`. 

I will be doing numerous adds and increments:

```
val++;
ary[x] += y;
ary[z]++;

```

I do not know how Java will compile these into byte code and if a thread could be interrupted in the middle of one of these statements blocks of byte code. In other words are those statements thread safe? 

Also, I know that the Vector class is synchronized, but I am not sure what that means. Will the following code be thread safe in that the value at position `i` will not change between the `vec.get(i)` and `vec.set(...)`.

```
class myClass {
  Vector<Integer> vec = new Vector<>(Integer);

  public void someMethod() {
    for (int i=0; i < vec.size(); i++)
      vec.set(i, vec.get(i) + value);
  }
}

```

Thanks in advance.