您的位置:首页 > 移动开发 > Android开发

暑期实习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();
}
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息