题目描述
建立三个线程A、B、C,A线程打印10次字母A,B线程打印10次字母B,C线程打印10次字母C,但是要求三个线程同时运行,并且实现交替打印,即按照ABCABCABC的顺序打印。
背景:其实这道题是在很久之前有次面试的笔试题,当时脑子里想起来要保证线程的执行顺序可以让线程sleep啊,我记得我写了一个for循环10次打印三个线程平均每个睡10ms,其实这已经违背题目了,题目要求三个线程,我那样弄了30个线程,现在想想真der。有趣的是最近我面试过的人对这到题目的思路和我当时一样,让线程sleep。。。。。。然后就和我当时一样回去等通知了。。。。
解析:
使用synchronized
public static void main (String[] arr) throws Exception{
Object a=new Object ();
Object b=new Object ();
Object c=new Object ();
Thread A=new Thread (new t ("A",a,b));//这个执行顺序 可以看下面代码撸一下
A.start ();
Thread.sleep (10); // 这里sleep主要保证线程启动顺序
Thread B=new Thread (new t ("B",b,c));
B.start ();
Thread.sleep (10);
Thread C=new Thread (new t ("C",c,a));
C.star