多线程面试题:编写程序,实现三个线程,运行输出 A1 B2 C3 A4 B5 C6 ……
public class Ex5 {
AtomicInteger num=new AtomicInteger(0);
ReentrantLock lock=new ReentrantLock(true);
void work(){
String n=Thread.currentThread().getName();
while (true){
lock.lock();
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.printf("%s%d ",n,num.incrementAndGet());
if ("C".equals(n)){
System.out.println();
}
lock.unlock();
}
}
public static void main(String[] args) {
var t=new Ex5();
new Thread(t::work,"A").start();
new Thread(t::work,"B").start();
new Thread(t::work,"C").start();
}
}
运行结果![在这里插入图片描述](https://img-blog.csdnimg.cn/3f9609a6e9404418ad8966e2dd1f5e84.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6JCM5paw6LW35q2l,size_20,color_FFFFFF,t_70,g_se,x_16)