Replace platform threads with virtual threads to fix busy-waiting#3446
Replace platform threads with virtual threads to fix busy-waiting#3446Kaaldut8 wants to merge 4 commits intoiluwatar:masterfrom
Conversation
PR SummaryRefactors busy-wait loops by replacing platform threads with virtual threads to improve concurrency handling and avoid busy-wait scenarios. Includes formatting enforcement via Spotless across modules, minor formatting tweaks in several modules, and updates to the session-server to use a virtual-thread-based scheduler for session expiration. Also adds license headers to rate-limiting-pattern sources and expands test file formatting for consistency across the project. Changes
autogenerated by presubmit.ai |
There was a problem hiding this comment.
✅ LGTM!
Review Summary
Commits Considered (1)
- ea68115: Apply Spotless formatting
Files Processed (2)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java (3 hunks)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/TokenBucketRateLimiter.java (2 hunks)
Actionable Comments (0)
Skipped Comments (8)
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java [1-25]
maintainability: "License header added"
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java [89-93]
maintainability: "Initialize TokenBucketRateLimiter outside try for proper cleanup"
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java [107-109]
maintainability: "Ensure TokenBucketRateLimiter is shutdown to avoid thread leaks"
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/TokenBucketRateLimiter.java [66-68]
maintainability: "Expose shutdown for the rate limiter's scheduler"
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/TokenBucketRateLimiter.java [74-75]
design: "Track last refill timestamp for per-second refill policy"
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/TokenBucketRateLimiter.java [79-80]
maintainability: "Initialize refill timestamp during bucket construction"
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/TokenBucketRateLimiter.java [82-91]
concurrency: "Make token consumption synchronized and refilling lazy via refillIfNeeded"
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/TokenBucketRateLimiter.java [93-99]
behavior: "Periodic refill for tokens based on elapsed time"
There was a problem hiding this comment.
🚨 Pull request needs attention.
Review Summary
Commits Considered (1)
- 90b794b: Removes expression which is always true
Files Processed (1)
- rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java (2 hunks)
Actionable Comments (2)
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java [89-89]
possible bug: "Initialize rate limiter variable outside try."
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java [91-91]
possible bug: "Potential risk of null after initialization."
Skipped Comments (1)
-
rate-limiting-pattern/src/main/java/com/iluwatar/rate/limiting/pattern/App.java [1-24]
maintainability: "Add license header to App.java."
| ExecutorService executor = Executors.newFixedThreadPool(3); | ||
| ScheduledExecutorService statsPrinter = Executors.newSingleThreadScheduledExecutor(); | ||
|
|
||
| TokenBucketRateLimiter tb = null; |
There was a problem hiding this comment.
TokenBucketRateLimiter tb = null;
| TokenBucketRateLimiter tb = null; | ||
| try { | ||
| TokenBucketRateLimiter tb = new TokenBucketRateLimiter(2, 1); | ||
| tb = new TokenBucketRateLimiter(2, 1); |
There was a problem hiding this comment.
tb = new TokenBucketRateLimiter(2, 1);
There was a problem hiding this comment.
✅ LGTM!
Review Summary
Commits Considered (1)
- 6d3356e: Add test coverage for sessionserver App
Files Processed (0)
Actionable Comments (0)
Skipped Comments (0)
|


Refactors busy-waiting loops by replacing platform threads with virtual threads and improving concurrency handling across affected components.
Fixes #2977