两个线程,一个线程打印1~52,另一个线程打印字母A-Z,打印顺序为12A34B56C……5152Z

    技术2022-07-13  82

    主要用到的juc 的Condition

    import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class T { Lock lock = new ReentrantLock(); Condition aa = lock.newCondition(); Condition bb = lock.newCondition(); public void a() { lock.lock(); try { for (int i = 1; i <= 52; i++) { System.out.print(i); if (i % 2 == 0) { bb.signalAll(); try { aa.await(); } catch (InterruptedException e) { e.printStackTrace(); } } } } finally { lock.unlock(); } } public void b() { lock.lock(); try { for (char i = 'A'; i <= 'Z'; i++) { System.out.print(i); aa.signalAll(); try { bb.await(); } catch (InterruptedException e) { e.printStackTrace(); } } } finally { lock.unlock(); } } public static void main(String[] args) { T t = new T(); new Thread(t::a).start(); new Thread(t::b).start(); } }
    Processed: 0.024, SQL: 9