1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| public class JUCTest {
private static volatile int count = 0; private static final int MAX = 100; private static final ReentrantLock lock = new ReentrantLock(); private static final Condition condition = lock.newCondition();
public static void main(String[] args) { Thread t1 = new Thread(new Print(), "thread-1"); Thread t2 = new Thread(new Print(), "thread-2"); t1.start(); t2.start(); }
static class Print implements Runnable {
@Override public void run() { while (count <= MAX) { lock.lock(); try { if (count <= MAX) { System.out.println(Thread.currentThread().getName() + ": " + count); count++; } condition.signalAll(); condition.await(); } catch (InterruptedException e) { throw new RuntimeException(e); } }
} } }
|