给我一验证springboot内置线程池是单线程的测试用例
时间: 2023-02-10 13:00:06 浏览: 105
好的,下面是一个测试 Spring Boot 内置线程池是否为单线程的示例:
```
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.concurrent.atomic.AtomicInteger;
@Component
public class TestThreadPoolTask {
private AtomicInteger count = new AtomicInteger(0);
@Async
public void test() {
System.out.println("thread name: " + Thread.currentThread().getName() + ", count: " + count.incrementAndGet());
}
}
```
```
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestThreadPool {
@Autowired
private TestThreadPoolTask testThreadPoolTask;
@Test
public void test() throws InterruptedException {
for (int i = 0; i < 100; i++) {
testThreadPoolTask.test();
}
Thread.sleep(10000);
}
}
```
如果 Spring Boot 内置的线程池是单线程的,那么运行这个测试用例后,输出的 "count" 值应该为 1 到 100。
但是如果 Spring Boot 内置的线程池不是单线程的,那么输出的 "count" 值可能会大于 100,因为多个线程同时修改 count 变量,会导致 count 值出现错误。
阅读全文