@Override public Object call() throws Exception { Random rnd = new Random(); while(!stop.get()) { if (rnd.nextBoolean()) { if (!lock.tryBeginUpdate()) continue; } else lock.beginUpdate(); int n = 1 + rnd.nextInt(1000); if (rnd.nextBoolean()) x.addAndGet(n); else y.addAndGet(n); z.addAndGet(n); lock.endUpdate(); } return null; } }, 15, "update");