From 66c2032c9b3614281ac4f8de86057bae974576f7 Mon Sep 17 00:00:00 2001 From: patrick Date: Mon, 24 Feb 2025 20:47:56 +0800 Subject: [PATCH 1/2] add AsyncCloseable --- .../igeeksky/xtool/core/AsyncCloseable.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/main/java/com/igeeksky/xtool/core/AsyncCloseable.java diff --git a/src/main/java/com/igeeksky/xtool/core/AsyncCloseable.java b/src/main/java/com/igeeksky/xtool/core/AsyncCloseable.java new file mode 100644 index 0000000..6a3440d --- /dev/null +++ b/src/main/java/com/igeeksky/xtool/core/AsyncCloseable.java @@ -0,0 +1,22 @@ +package com.igeeksky.xtool.core; + +import java.util.concurrent.CompletableFuture; + +/** + * 异步关闭接口 + *

+ * IO 操作类对象建议实现此接口。 + * + * @author Patrick.Lau + * @since 1.1.3 + */ +public interface AsyncCloseable { + + /** + * 异步关闭 + * + * @return 异步关闭 + */ + CompletableFuture closeAsync(); + +} From a1a3d1290deba5afd7d98aaf2c24b06a372fb125 Mon Sep 17 00:00:00 2001 From: patrick Date: Mon, 24 Feb 2025 21:07:39 +0800 Subject: [PATCH 2/2] edit RingBufferTest --- .../com/igeeksky/xtool/core/collection/RingBufferTest.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/igeeksky/xtool/core/collection/RingBufferTest.java b/src/test/java/com/igeeksky/xtool/core/collection/RingBufferTest.java index 88cf6f3..57491ed 100644 --- a/src/test/java/com/igeeksky/xtool/core/collection/RingBufferTest.java +++ b/src/test/java/com/igeeksky/xtool/core/collection/RingBufferTest.java @@ -8,6 +8,7 @@ import java.util.Set; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.LockSupport; import java.util.function.Consumer; @@ -375,7 +376,7 @@ void test_TwoOffer_TwoConsumer_Concurrently() throws InterruptedException { } @Test - void test_TwoOffer_OnePoll_Concurrently() { + void test_TwoOffer_OnePoll_Concurrently() throws InterruptedException { RingBuffer buffer = new RingBuffer<>(2048); StringConsumer consumer = new StringConsumer(); CountDownLatch latch = new CountDownLatch(2); @@ -401,6 +402,8 @@ void test_TwoOffer_OnePoll_Concurrently() { thread1.start(); thread2.start(); + latch.await(2000, TimeUnit.MILLISECONDS); + for (int i = 0; i < 2001; i++) { String polled = buffer.poll(); if (polled != null) { @@ -408,7 +411,6 @@ void test_TwoOffer_OnePoll_Concurrently() { continue; } assertEquals(consumer.getCount(), buffer.reads()); - LockSupport.parkNanos(100); } Set values = consumer.getValues();