Eclipse 与您所看到的无关。如果您在应该同时调用的方法内的某个位置设置断点,并且如果您的客户端代码确实启动了 20 个并发请求,并且如果您观察到第二个请求仅在第一个请求完成后才被处理,那么您的想法是并发的不是。
我看到两种可能的解释:
- 你有一个独特的线程来处理所有的请求。如果多个并发发送,则所有请求都排队处理并一一处理
- 您有多个线程同时处理请求,但客户端代码顺序发送 20 个请求,而不是同时发送 20 个请求。
无论如何,使用断点来测试这样的事情并不是一个好的解决方案。您必须为 20 个线程中的每一个都点击“继续 (F8)”按钮,因此它们不会同时重新启动。您最好使用初始化为 20 的CountDownLatch来执行此操作:
private CountDownLatch latch = new CountDownLatch(20);
public void run() {
// some code
// here we want to pause all 20 threads and restart them all at the same time
latch.countDown(); // The 20th thread will open the barrier, and they will all restart at the same time
latch.await();
}