From 53901479857cd51144408ad1a1dea8124e837bc7 Mon Sep 17 00:00:00 2001 From: redkale Date: Tue, 4 Jul 2023 19:09:29 +0800 Subject: [PATCH] =?UTF-8?q?AsyncConnection=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/redkale/net/AsyncNioConnection.java | 34 ++++++++++--------- .../org/redkale/source/CacheMemorySource.java | 2 +- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/main/java/org/redkale/net/AsyncNioConnection.java b/src/main/java/org/redkale/net/AsyncNioConnection.java index 392dd02fd..5715bd56c 100644 --- a/src/main/java/org/redkale/net/AsyncNioConnection.java +++ b/src/main/java/org/redkale/net/AsyncNioConnection.java @@ -298,23 +298,25 @@ abstract class AsyncNioConnection extends AsyncConnection { this.clientModeWriteQueue.offer(data); this.writeCompletionHandler = (CompletionHandler) handler; this.writeAttachment = attachment; - if (writeKey == null) { - ioWriteThread.register(selector -> { - try { - if (writeKey == null) { - writeKey = implRegister(selector, SelectionKey.OP_WRITE); - writeKey.attach(this); - } else { - writeKey.interestOps(writeKey.interestOps() | SelectionKey.OP_WRITE); + try { + if (writeKey == null) { + ioWriteThread.register(selector -> { + try { + if (writeKey == null) { + writeKey = implRegister(selector, SelectionKey.OP_WRITE); + writeKey.attach(this); + } else { + writeKey.interestOps(writeKey.interestOps() | SelectionKey.OP_WRITE); + } + } catch (ClosedChannelException e) { + handleWrite(0, e); } - } catch (ClosedChannelException e) { - this.writeCompletionHandler = (CompletionHandler) handler; - this.writeAttachment = attachment; - handleWrite(0, e); - } - }); - } else { - ioWriteThread.interestOpsOr(writeKey, SelectionKey.OP_WRITE); + }); + } else { + ioWriteThread.interestOpsOr(writeKey, SelectionKey.OP_WRITE); + } + } catch (Exception e) { + handleWrite(0, e); } } diff --git a/src/main/java/org/redkale/source/CacheMemorySource.java b/src/main/java/org/redkale/source/CacheMemorySource.java index 5ed478e57..73a97ea12 100644 --- a/src/main/java/org/redkale/source/CacheMemorySource.java +++ b/src/main/java/org/redkale/source/CacheMemorySource.java @@ -1430,7 +1430,7 @@ public final class CacheMemorySource extends AbstractCacheSource { } CacheEntry entry = container.get(key); if (entry == null || !entry.isSetCacheType() || entry.csetValue == null) { - Set set = cacheType == CacheEntryType.SET_SORTED ? Collections.synchronizedSet(new TreeSet<>()) : new CopyOnWriteArraySet(); + Set set = cacheType == CacheEntryType.SET_SORTED ? new ConcurrentSkipListSet<>() : new CopyOnWriteArraySet(); entry = new CacheEntry(cacheType, key, null, set, null, null); CacheEntry old = container.putIfAbsent(key, entry); if (old != null) {