項目目錄結構
HighConcurrencyTimerProject/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ ├── com/
│ │ │ │ ├── example/
│ │ │ │ │ ├── HighConcurrencyTimerExample.java
│ │ │ │ │ ├── ThreadPoolExample.java
│ ├── test/
│ │ ├── java/
│ │ │ ├── com/
│ │ │ │ ├── example/
│ │ │ │ │ ├── HighConcurrencyTimerExampleTest.java
│ │ │ │ │ ├── ThreadPoolExampleTest.java
├── pom.xmlHighConcurrencyTimerProject/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ ├── com/
│ │ │ │ ├── example/
│ │ │ │ │ ├── HighConcurrencyTimerExample.java
│ │ │ │ │ ├── ThreadPoolExample.java
│ ├── test/
│ │ ├── java/
│ │ │ ├── com/
│ │ │ │ ├── example/
│ │ │ │ │ ├── HighConcurrencyTimerExampleTest.java
│ │ │ │ │ ├── ThreadPoolExampleTest.java
├── pom.xml
代碼文件
HighConcurrencyTimerExample.java
package com.example;
import io.netty.util.HashedWheelTimer;
import io.netty.util.Timeout;
import io.netty.util.TimerTask;
import java.util.concurrent.TimeUnit;
public class HighConcurrencyTimerExample {
public static void main(String[] args) {
// 創建一個HashedWheelTimer實例,時間輪的精度為1毫秒,槽數為1024
HashedWheelTimer timer = new HashedWheelTimer(1, TimeUnit.MILLISECONDS, 1024);
// 創建並添加100萬個定時任務
for (int i = 0; i < 1000000; i++) {
timer.newTimeout(new TimerTask() {
@Override
public void run(Timeout timeout) {
System.out.println("Task executed at: " + new java.util.Date());
}
}, 1, TimeUnit.SECONDS);
}
// 關閉定時器
Runtime.getRuntime().addShutdownHook(new Thread(timer::stop));
}
}
ThreadPoolExample.java
package com.example;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ThreadPoolExample {
public static void main(String[] args) {
ScheduledExecutorService executorService = Executors.newScheduledThreadPool(10);
for (int i = 0; i < 1000000; i++) {
executorService.schedule(() -> System.out.println("Task executed at: " + new java.util.Date()), 1, TimeUnit.SECONDS);
}
executorService.shutdown();
}
}
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>HighConcurrencyTimerProject</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.68.Final</version>
</dependency>
</dependencies>
</project>
構建項目
- 打開終端,導航到項目根目錄,運行以下命令來構建項目:
mvn clean install
運行項目:
- 使用以下命令運行 HighConcurrencyTimerExample:
mvn exec:java -Dexec.mainClass="com.example.HighConcurrencyTimerExample"
當你運行 HighConcurrencyTimerExample 時,控制枱會每秒輸出大量任務執行的時間戳。例如:
Task executed at: Fri Dec 27 22:10:00 CST 2024
Task executed at: Fri Dec 27 22:10:00 CST 2024
Task executed at: Fri Dec 27 22:10:00 CST 2024
...
- 使用以下命令運行 ThreadPoolExample:
mvn exec:java -Dexec.mainClass="com.example.ThreadPoolExample"
當你運行 ThreadPoolExample 時,控制枱也會每秒輸出大量任務執行的時間戳。例如:
Task executed at: Fri Dec 27 22:10:00 CST 2024
Task executed at: Fri Dec 27 22:10:00 CST 2024
Task executed at: Fri Dec 27 22:10:00 CST 2024
...