0
考虑使用此生产者 - 消费者代码ArrayBlockingQueue
:我想查找 a。整体消耗了多少总时间put()
/take()
? b。 put()
和take()
电话在等待中花费了多少时间?阻止?分析Java应用程序:递归方法的累积时间
在VisualVM中创建快照只显示深度为run(),而不是调用的深度为put()
/take()
。任何想法如何获得这些时间?
一般来说,如何从main()
递归降低所有方法的累积运行时间?
final BlockingQueue<Integer> queue = new ArrayBlockingQueue<Integer>(QUEUE_SIZE);
ExecutorService exec = Executors.newFixedThreadPool(2);
exec.submit(new Runnable() {
int i =0;
@Override
public void run() {
while(i++<NUM)
try {
queue.put(i);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
exec.submit(new Runnable() {
int i =0;
@Override
public void run() {
while(i++<NUM)
try {
queue.take();
} catch (InterruptedException e) {
e.printStackTrace();
}
consumerFinished.countDown();
}
});