Skip to content

Commit 2dd7ae7

Browse files
committed
feat: enable virtual threads
1 parent f4be24e commit 2dd7ae7

File tree

3 files changed

+46
-1
lines changed

3 files changed

+46
-1
lines changed

pom.xml

+11
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,17 @@
7272
<groupId>org.springframework.boot</groupId>
7373
<artifactId>spring-boot-maven-plugin</artifactId>
7474
</plugin>
75+
<plugin>
76+
<groupId>org.apache.maven.plugins</groupId>
77+
<artifactId>maven-compiler-plugin</artifactId>
78+
<configuration>
79+
<source>22</source>
80+
<target>22</target>
81+
<compilerArgs>
82+
--enable-preview
83+
</compilerArgs>
84+
</configuration>
85+
</plugin>
7586
</plugins>
7687
</build>
7788

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package dev.nicklatcham.shopthing.config;
2+
3+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
4+
import org.springframework.boot.web.embedded.tomcat.TomcatProtocolHandlerCustomizer;
5+
import org.springframework.context.annotation.Bean;
6+
import org.springframework.context.annotation.Configuration;
7+
import org.springframework.core.task.AsyncTaskExecutor;
8+
import org.springframework.core.task.support.TaskExecutorAdapter;
9+
import org.springframework.scheduling.annotation.EnableAsync;
10+
import java.util.concurrent.Executors;
11+
12+
@EnableAsync
13+
@Configuration
14+
@ConditionalOnProperty(
15+
value = "spring.thread-executor",
16+
havingValue = "virtual"
17+
)
18+
public class ThreadConfig {
19+
20+
@Bean
21+
public AsyncTaskExecutor applicationTaskExecutor() {
22+
return new TaskExecutorAdapter(Executors.newVirtualThreadPerTaskExecutor());
23+
}
24+
25+
@Bean
26+
public TomcatProtocolHandlerCustomizer<?> protocolHandlerVirtualThreadExecutorCustomizer() {
27+
return protocolHandler -> {
28+
protocolHandler.setExecutor(Executors.newVirtualThreadPerTaskExecutor());
29+
};
30+
}
31+
}
+4-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
spring.application.name=shopthing
2-
spring.datasource.url=jdbc:h2:mem:shopthingdev
2+
spring.datasource.url=jdbc:h2:mem:shopthingdev
3+
4+
spring.threads.virtual.enabled=true
5+
spring.thread-executor=virtual

0 commit comments

Comments
 (0)