迅雷笔试题

启动三个线程,循环打印出ABCABC....

代码实现如下:

public class ABC {

public static void main(String[] args) {
Lock lock
=new Lock();
MyThread t1
=new MyThread("A", lock,10);
MyThread t2
=new MyThread("B", lock,10);
MyThread t3
=new MyThread("C", lock,10);
new Thread(t1).start();
new Thread(t2).start();
new Thread(t3).start();
}

}
//线程
class MyThread implements Runnable{

String key
=null;
Lock lock
=null;
int num=0;
public MyThread(String k,Lock l,int n) {
key
=k;
lock
=l;
num
=n;
}
@Override
public void run() {
while(num>0){
synchronized (lock) {
if(key==lock.queue.getFirst())
{
System.out.print(key);
lock.next();
num
--;
}}
}
}
}
//锁功能
class Lock{
LinkedList
<String>queue;//模仿循环队列
Lock(){
queue
=new LinkedList<String>();
queue.add(
"A");
queue.add(
"B");
queue.add(
"C");
}
void next(){
String h
=queue.poll();
queue.add(h);
}

}

posted @ 2011-03-07 16:17  macula7  阅读(338)  评论(0编辑  收藏  举报