import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Semaphore;
import java.util.concurrent.SynchronousQueue;
/**
* 创建10个线程,依次获取生产者生成的数据
*
*/
public class ThreadTest2 {
public static void main(String[] args) {
final SynchronousQueue<String> sq=new SynchronousQueue<>();
//信号量
final Semaphore semaphore=new Semaphore(1);
for(int i=1;i<=10;i++){
new Thread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
try {
semaphore.acquire();//获取信号量
doSome(sq.take());
semaphore.release();//释放信号量
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
for(int i=1;i<=10;i++){
try {
sq.put(i+"");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void doSome(String log){
System.out.println(log+" "+System.currentTimeMillis()/1000);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
java多线程:18、面试题2
最新推荐文章于 2023-08-13 18:34:10 发布