面试题:实现用两个线程交替打印"字节跳动2019"
记录一下笔面试中出现的比较简单却又带来了很大麻烦的一些题目。
题目:实现用两个线程交替打印"字节跳动2019"
来源:字节跳动后端开发二面
java代码实现
/**
* @Description 面试题:两个线程交替打印 "字节跳动2019"
* @Author shendongjian
* @CreateTime 2019/7/24 10:09
*/
public class TwoThreadPrint {
private static String str = "字节跳动2019";
private static int index = 0;
private static final Object lock = new Object();
public static void main(String[] args){
new Thread(()->{
while(index < 104){
synchronized (lock){
try{
if(index % 2 == 1){
lock.wait();
}else{
System.out.print(str.charAt(index % str.length()));
index++;
}
}catch (Exception e){
e.printStackTrace();
}finally {
lock.notify();
}
}
}
}).start();
new Thread(()->{
while(index < 104){
synchronized (lock){
try{
if(index % 2 == 0){
lock.wait();
}else{
System.out.print(str.charAt(index % str.length()));
index++;
if(index%str.length() == 0){
System.out.println();
}
}
}catch (Exception e){
e.printStackTrace();
}finally {
lock.notify();
}
}
}
}).start();
}
}
运行效果如图
代码有很大的优化和精简的空间,但是由于时间问题
(不,我是懒)在此不做深入研究