Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit6f53cda

Browse files
johnouslandelle
authored andcommitted
Remove usage of Netty Atomic*FieldUpdater in favor of JDKs (AsyncHttpClient#1317)
Motivation:In later Java8 versions our Atomic*FieldUpdater are slower then the JDK implementations so we should not use ours anymore. Even worse the JDK implementations provide for example an optimized version of addAndGet(...) using intrinsics which makes it a lot faster for this use-case.Modifications:- Remove methods that return Netty Atomic*FieldUpdaters.- Use the JDK implementations everywhere.Result:Faster code.
1 parentd1758d6 commit6f53cda

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

‎client/src/main/java/org/asynchttpclient/netty/NettyResponseFuture.java‎

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
packageorg.asynchttpclient.netty;
1515

1616
importstaticorg.asynchttpclient.util.DateUtils.unpreciseMillisTime;
17-
importstaticio.netty.util.internal.PlatformDependent.*;
1817
importio.netty.channel.Channel;
1918

2019
importjava.util.concurrent.CancellationException;
@@ -49,8 +48,10 @@ public final class NettyResponseFuture<V> implements ListenableFuture<V> {
4948

5049
privatestaticfinalLoggerLOGGER =LoggerFactory.getLogger(NettyResponseFuture.class);
5150

52-
privatestaticfinalAtomicIntegerFieldUpdater<NettyResponseFuture<?>>REDIRECT_COUNT_UPDATER =newAtomicIntegerFieldUpdater(NettyResponseFuture.class,"redirectCount");
53-
privatestaticfinalAtomicIntegerFieldUpdater<NettyResponseFuture<?>>CURRENT_RETRY_UPDATER =newAtomicIntegerFieldUpdater(NettyResponseFuture.class,"currentRetry");
51+
@SuppressWarnings("rawtypes")
52+
privatestaticfinalAtomicIntegerFieldUpdater<NettyResponseFuture>REDIRECT_COUNT_UPDATER =AtomicIntegerFieldUpdater.newUpdater(NettyResponseFuture.class,"redirectCount");
53+
@SuppressWarnings("rawtypes")
54+
privatestaticfinalAtomicIntegerFieldUpdater<NettyResponseFuture>CURRENT_RETRY_UPDATER =AtomicIntegerFieldUpdater.newUpdater(NettyResponseFuture.class,"currentRetry");
5455

5556
privatefinallongstart =unpreciseMillisTime();
5657
privatefinalChannelPoolPartitioningconnectionPoolPartitioning;
@@ -70,13 +71,20 @@ public final class NettyResponseFuture<V> implements ListenableFuture<V> {
7071
@SuppressWarnings("unused")
7172
privatevolatileintonThrowableCalled =0;
7273

73-
privatestaticfinalAtomicIntegerFieldUpdater<NettyResponseFuture<?>>isDoneField =newAtomicIntegerFieldUpdater(NettyResponseFuture.class,"isDone");
74-
privatestaticfinalAtomicIntegerFieldUpdater<NettyResponseFuture<?>>isCancelledField =newAtomicIntegerFieldUpdater(NettyResponseFuture.class,"isCancelled");
75-
privatestaticfinalAtomicIntegerFieldUpdater<NettyResponseFuture<?>>inAuthField =newAtomicIntegerFieldUpdater(NettyResponseFuture.class,"inAuth");
76-
privatestaticfinalAtomicIntegerFieldUpdater<NettyResponseFuture<?>>inProxyAuthField =newAtomicIntegerFieldUpdater(NettyResponseFuture.class,"inProxyAuth");
77-
privatestaticfinalAtomicIntegerFieldUpdater<NettyResponseFuture<?>>statusReceivedField =newAtomicIntegerFieldUpdater(NettyResponseFuture.class,"statusReceived");
78-
privatestaticfinalAtomicIntegerFieldUpdater<NettyResponseFuture<?>>contentProcessedField =newAtomicIntegerFieldUpdater(NettyResponseFuture.class,"contentProcessed");
79-
privatestaticfinalAtomicIntegerFieldUpdater<NettyResponseFuture<?>>onThrowableCalledField =newAtomicIntegerFieldUpdater(NettyResponseFuture.class,"onThrowableCalled");
74+
@SuppressWarnings("rawtypes")
75+
privatestaticfinalAtomicIntegerFieldUpdater<NettyResponseFuture>isDoneField =AtomicIntegerFieldUpdater.newUpdater(NettyResponseFuture.class,"isDone");
76+
@SuppressWarnings("rawtypes")
77+
privatestaticfinalAtomicIntegerFieldUpdater<NettyResponseFuture>isCancelledField =AtomicIntegerFieldUpdater.newUpdater(NettyResponseFuture.class,"isCancelled");
78+
@SuppressWarnings("rawtypes")
79+
privatestaticfinalAtomicIntegerFieldUpdater<NettyResponseFuture>inAuthField =AtomicIntegerFieldUpdater.newUpdater(NettyResponseFuture.class,"inAuth");
80+
@SuppressWarnings("rawtypes")
81+
privatestaticfinalAtomicIntegerFieldUpdater<NettyResponseFuture>inProxyAuthField =AtomicIntegerFieldUpdater.newUpdater(NettyResponseFuture.class,"inProxyAuth");
82+
@SuppressWarnings("rawtypes")
83+
privatestaticfinalAtomicIntegerFieldUpdater<NettyResponseFuture>statusReceivedField =AtomicIntegerFieldUpdater.newUpdater(NettyResponseFuture.class,"statusReceived");
84+
@SuppressWarnings("rawtypes")
85+
privatestaticfinalAtomicIntegerFieldUpdater<NettyResponseFuture>contentProcessedField =AtomicIntegerFieldUpdater.newUpdater(NettyResponseFuture.class,"contentProcessed");
86+
@SuppressWarnings("rawtypes")
87+
privatestaticfinalAtomicIntegerFieldUpdater<NettyResponseFuture>onThrowableCalledField =AtomicIntegerFieldUpdater.newUpdater(NettyResponseFuture.class,"onThrowableCalled");
8088

8189
// volatile where we need CAS ops
8290
privatevolatileintredirectCount =0;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp