暑期实习4月份笔试试题解答-Android 工程师(3)
2014-04-10 21:51
232 查看
某大型杀毒软件公司2014年4月份笔试试题解答,第三小题,用2种thread实现方法实现2个线程,具体要求见程序,请大家指出不足之处。
/* 程序来源:暑期实习生招聘 * 源文件名称:TestPrinter.java * 要 点: * 请用2中thread实现方法实现2个线程: * A线程打印10次张三,B线程打印10次李四,要求: * A:线程同时运行 * B:交替打印10次张三,李四 */ public class TestPrinter{ public static void main(String[] args){ Printer p1 = new Printer(); Printer p2 = new Printer(); p2.flag = 1; Thread A = new Thread(p1); Thread B = new Thread(p2); A.start(); B.start(); } } class Printer implements Runnable { static Object o = new Object(); int flag = 0; public void run(){ if(flag == 0){ synchronized(o){ for(int i=0;i<10;i++){ System.out.println("张三"); o.notify(); try{ o.wait(); }catch(InterruptedException e){ e.printStackTrace(); } } o.notify(); //张三跳出循环后再通知一次李四,这样李四才会结束 } } if(flag == 1){ try{ Thread.sleep(100); }catch(InterruptedException e){ e.printStackTrace(); } synchronized(o){ for(int i=0;i<10;i++){ System.out.println("李四"); o.notify(); try{ o.wait(); }catch(InterruptedException e){ e.printStackTrace(); } } } } } }