多线程编程面试题1

来源:互联网 发布:数据之巅 pdf 下载 编辑:程序博客网 时间:2024/04/29 14:59
package zhu.suo;


import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
/*1.四个线程共用4秒打印出16条日志
 * 
 * 解析:
 * 在print方法中
 * 第一秒 四个进程同时带一个数据进入
 * 同样。。
 * */
public class Test1 {


public static void main(String[] args) {
final BlockingQueue quee = new ArrayBlockingQueue<String>(16);
for (int i=1;i<5;i++)
{
new Thread(
new Runnable() {
@Override
public void run() {
while(true)
try {
print(quee.take());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
).start();
}
for (int i=1;i<17;i++)
{
String s = "i:"+i;
try {
quee.put(s);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

static void print(Object log)
{
System.out.println("current:"+System.currentTimeMillis()/1000+",log="+log);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
0 0