/** * @param init the initial value * * @return a safe or unsafe sequence set to the passed init value */ static Sequence newSequence(long init) { if (hasUnsafe()) { return new UnsafeSequence(init); } else { return new AtomicSequence(init); } }
UnsafeSequence seq = new UnsafeSequence(); // both thread instances share same object Thread t1 = new MyThread(seq); Thread t2 = new MyThread(seq); t1.start(); t2.start(); // run method for above `MyThread` class: public void run() { while(some condition) { // some work System.out.println(seq.getNext()); // sequence is unpredictable } }
/** * @param init the initial value * * @return a safe or unsafe sequence set to the passed init value */ static Sequence newSequence(long init) { if (hasUnsafe()) { return new UnsafeSequence(init); } else { return new AtomicSequence(init); } }