线程交替打印A1B2C3实现一(Lock)
问:线程如何交替打印A1B2C3?通过
LOCK实现。
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class LockTest {
public static void main(String[] args) {
Lock lock = new ReentrantLock();
Condition condition1 = lock.newCondition();
Condition condition2 = lock.newCondition();
new Thread(() -> {
for (char i = 'A'; i <= 'Z'; i++) {
lock.lock();
try {
System.out.println(Thread.currentThread().getName() + "======== " + i);
condition2.signal(); // 唤醒thread-1
condition1.await(); // 让thread-A处于等待状态
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
lock.unlock();
}
}
}, "thread-A").start();
new Thread(() -> {
for (int i = 1; i <= 26; i++) {
lock.lock();
try {
System.out.println(Thread.currentThread().getName() + "======== " + i);
condition1.signal(); // 唤醒thread-A
condition2.await(); // 让thread-1处于等待状态
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
lock.unlock();
}
}
}, "thread-1").start();
}
}