一个笔试题
前天面试遇到一个面试题,要求写两个线程,一个线程打印数字1-52,一个线程打印A-Z。效果是:“12A34B…5152Z”网上找了一些文章,都有些功能残缺,自己参考着写了一个完整版的,一个测试类实现。供参考。
public class SimpleTest {
//用于线程的锁
Object obj = new Object();
//t1线程是否已经启动,用于t2线程判断是否可以开始打印
boolean isT1Started = false;
@Test
public void lambda() {
//打印数字的线程
Thread t1 = new Thread(() -> {
synchronized (obj) {
for (int i = 1; i < 53; i++) {
System.out.print(i);
//i打印完‘2’告诉t2可以开始打印了
if (i == 2) {
isT1Started = true;
}
//打印到偶数即唤醒t2,同时进入wait状态
if (i % 2 == 0) {
obj.notify();
try {
obj.wait();
} catch (In