Replace usage of QueueFactory with ConcurrentLinkedQueue and LinkedBlockingQueue. See #477

This commit is contained in:
Norman Maurer 2012-07-28 21:35:48 +02:00
parent 5189bb1f3f
commit 26b513236f
14 changed files with 33 additions and 64 deletions

View File

@ -20,6 +20,7 @@ import static org.jboss.netty.channel.Channels.*;
import java.nio.channels.ClosedChannelException; import java.nio.channels.ClosedChannelException;
import java.nio.channels.NotYetConnectedException; import java.nio.channels.NotYetConnectedException;
import java.util.Queue; import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import org.jboss.netty.channel.AbstractChannel; import org.jboss.netty.channel.AbstractChannel;
@ -32,7 +33,6 @@ import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelSink; import org.jboss.netty.channel.ChannelSink;
import org.jboss.netty.channel.DefaultChannelConfig; import org.jboss.netty.channel.DefaultChannelConfig;
import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.MessageEvent;
import org.jboss.netty.util.internal.QueueFactory;
import org.jboss.netty.util.internal.ThreadLocalBoolean; import org.jboss.netty.util.internal.ThreadLocalBoolean;
/** /**
@ -49,7 +49,7 @@ final class DefaultLocalChannel extends AbstractChannel implements LocalChannel
private final ChannelConfig config; private final ChannelConfig config;
private final ThreadLocalBoolean delivering = new ThreadLocalBoolean(); private final ThreadLocalBoolean delivering = new ThreadLocalBoolean();
final Queue<MessageEvent> writeBuffer = QueueFactory.createQueue(MessageEvent.class); final Queue<MessageEvent> writeBuffer = new ConcurrentLinkedQueue<MessageEvent>();
volatile DefaultLocalChannel pairedChannel; volatile DefaultLocalChannel pairedChannel;
volatile LocalAddress localAddress; volatile LocalAddress localAddress;

View File

@ -23,8 +23,7 @@ import java.nio.channels.WritableByteChannel;
import java.util.Collection; import java.util.Collection;
import java.util.Iterator; import java.util.Iterator;
import java.util.Queue; import java.util.Queue;
import java.util.concurrent.BlockingQueue; import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@ -36,7 +35,6 @@ import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelSink; import org.jboss.netty.channel.ChannelSink;
import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.MessageEvent;
import org.jboss.netty.channel.socket.nio.SocketSendBufferPool.SendBuffer; import org.jboss.netty.channel.socket.nio.SocketSendBufferPool.SendBuffer;
import org.jboss.netty.util.internal.QueueFactory;
import org.jboss.netty.util.internal.ThreadLocalBoolean; import org.jboss.netty.util.internal.ThreadLocalBoolean;
abstract class AbstractNioChannel<C extends SelectableChannel & WritableByteChannel> extends AbstractChannel { abstract class AbstractNioChannel<C extends SelectableChannel & WritableByteChannel> extends AbstractChannel {
@ -204,13 +202,13 @@ abstract class AbstractNioChannel<C extends SelectableChannel & WritableByteChan
abstract InetSocketAddress getRemoteSocketAddress() throws Exception; abstract InetSocketAddress getRemoteSocketAddress() throws Exception;
private final class WriteRequestQueue implements BlockingQueue<MessageEvent> { private final class WriteRequestQueue implements Queue<MessageEvent> {
private final ThreadLocalBoolean notifying = new ThreadLocalBoolean(); private final ThreadLocalBoolean notifying = new ThreadLocalBoolean();
private final BlockingQueue<MessageEvent> queue; private final Queue<MessageEvent> queue;
public WriteRequestQueue() { public WriteRequestQueue() {
this.queue = QueueFactory.createQueue(MessageEvent.class); this.queue = new ConcurrentLinkedQueue<MessageEvent>();
} }
public MessageEvent remove() { public MessageEvent remove() {
@ -269,26 +267,6 @@ abstract class AbstractNioChannel<C extends SelectableChannel & WritableByteChan
return queue.add(e); return queue.add(e);
} }
public void put(MessageEvent e) throws InterruptedException {
queue.put(e);
}
public boolean offer(MessageEvent e, long timeout, TimeUnit unit) throws InterruptedException {
return queue.offer(e, timeout, unit);
}
public MessageEvent take() throws InterruptedException {
return queue.take();
}
public MessageEvent poll(long timeout, TimeUnit unit) throws InterruptedException {
return queue.poll(timeout, unit);
}
public int remainingCapacity() {
return queue.remainingCapacity();
}
public boolean remove(Object o) { public boolean remove(Object o) {
return queue.remove(o); return queue.remove(o);
} }
@ -297,14 +275,6 @@ abstract class AbstractNioChannel<C extends SelectableChannel & WritableByteChan
return queue.contains(o); return queue.contains(o);
} }
public int drainTo(Collection<? super MessageEvent> c) {
return queue.drainTo(c);
}
public int drainTo(Collection<? super MessageEvent> c, int maxElements) {
return queue.drainTo(c, maxElements);
}
public boolean offer(MessageEvent e) { public boolean offer(MessageEvent e) {
boolean success = queue.offer(e); boolean success = queue.offer(e);
assert success; assert success;

View File

@ -28,6 +28,7 @@ import java.nio.channels.WritableByteChannel;
import java.util.Iterator; import java.util.Iterator;
import java.util.Queue; import java.util.Queue;
import java.util.Set; import java.util.Set;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
@ -45,7 +46,6 @@ import org.jboss.netty.logging.InternalLogger;
import org.jboss.netty.logging.InternalLoggerFactory; import org.jboss.netty.logging.InternalLoggerFactory;
import org.jboss.netty.util.ThreadRenamingRunnable; import org.jboss.netty.util.ThreadRenamingRunnable;
import org.jboss.netty.util.internal.DeadLockProofWorker; import org.jboss.netty.util.internal.DeadLockProofWorker;
import org.jboss.netty.util.internal.QueueFactory;
abstract class AbstractNioWorker implements Worker { abstract class AbstractNioWorker implements Worker {
@ -108,14 +108,14 @@ abstract class AbstractNioWorker implements Worker {
/** /**
* Queue of channel registration tasks. * Queue of channel registration tasks.
*/ */
private final Queue<Runnable> registerTaskQueue = QueueFactory.createQueue(Runnable.class); private final Queue<Runnable> registerTaskQueue = new ConcurrentLinkedQueue<Runnable>();
/** /**
* Queue of WriteTasks * Queue of WriteTasks
*/ */
protected final Queue<Runnable> writeTaskQueue = QueueFactory.createQueue(Runnable.class); protected final Queue<Runnable> writeTaskQueue = new ConcurrentLinkedQueue<Runnable>();
private final Queue<Runnable> eventQueue = QueueFactory.createQueue(Runnable.class); private final Queue<Runnable> eventQueue = new ConcurrentLinkedQueue<Runnable>();
private volatile int cancelledKeys; // should use AtomicInteger but we just need approximation private volatile int cancelledKeys; // should use AtomicInteger but we just need approximation

View File

@ -26,6 +26,7 @@ import java.nio.channels.Selector;
import java.util.Iterator; import java.util.Iterator;
import java.util.Queue; import java.util.Queue;
import java.util.Set; import java.util.Set;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
@ -43,7 +44,6 @@ import org.jboss.netty.logging.InternalLogger;
import org.jboss.netty.logging.InternalLoggerFactory; import org.jboss.netty.logging.InternalLoggerFactory;
import org.jboss.netty.util.ThreadRenamingRunnable; import org.jboss.netty.util.ThreadRenamingRunnable;
import org.jboss.netty.util.internal.DeadLockProofWorker; import org.jboss.netty.util.internal.DeadLockProofWorker;
import org.jboss.netty.util.internal.QueueFactory;
class NioClientSocketPipelineSink extends AbstractNioChannelSink { class NioClientSocketPipelineSink extends AbstractNioChannelSink {
@ -174,7 +174,7 @@ class NioClientSocketPipelineSink extends AbstractNioChannelSink {
private boolean started; private boolean started;
private final AtomicBoolean wakenUp = new AtomicBoolean(); private final AtomicBoolean wakenUp = new AtomicBoolean();
private final Object startStopLock = new Object(); private final Object startStopLock = new Object();
private final Queue<Runnable> registerTaskQueue = QueueFactory.createQueue(Runnable.class); private final Queue<Runnable> registerTaskQueue = new ConcurrentLinkedQueue<Runnable>();
private final int subId; private final int subId;
Boss(int subId) { Boss(int subId) {

View File

@ -19,12 +19,12 @@ import static org.jboss.netty.channel.Channels.*;
import java.io.IOException; import java.io.IOException;
import java.util.Queue; import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelFuture; import org.jboss.netty.channel.ChannelFuture;
import org.jboss.netty.channel.Channels; import org.jboss.netty.channel.Channels;
import org.jboss.netty.channel.socket.Worker; import org.jboss.netty.channel.socket.Worker;
import org.jboss.netty.util.internal.QueueFactory;
/** /**
* Abstract base class for Oio-Worker implementations * Abstract base class for Oio-Worker implementations
@ -33,7 +33,7 @@ import org.jboss.netty.util.internal.QueueFactory;
*/ */
abstract class AbstractOioWorker<C extends AbstractOioChannel> implements Worker { abstract class AbstractOioWorker<C extends AbstractOioChannel> implements Worker {
private final Queue<Runnable> eventQueue = QueueFactory.createQueue(Runnable.class); private final Queue<Runnable> eventQueue = new ConcurrentLinkedQueue<Runnable>();
protected final C channel; protected final C channel;

View File

@ -16,6 +16,7 @@
package org.jboss.netty.handler.codec.http; package org.jboss.netty.handler.codec.http;
import java.util.Queue; import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicLong;
import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffer;
@ -26,7 +27,6 @@ import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ChannelStateEvent;
import org.jboss.netty.channel.ChannelUpstreamHandler; import org.jboss.netty.channel.ChannelUpstreamHandler;
import org.jboss.netty.handler.codec.PrematureChannelClosureException; import org.jboss.netty.handler.codec.PrematureChannelClosureException;
import org.jboss.netty.util.internal.QueueFactory;
/** /**
* A combination of {@link HttpRequestEncoder} and {@link HttpResponseDecoder} * A combination of {@link HttpRequestEncoder} and {@link HttpResponseDecoder}
@ -49,7 +49,7 @@ public class HttpClientCodec implements ChannelUpstreamHandler,
ChannelDownstreamHandler { ChannelDownstreamHandler {
/** A queue that is used for correlating a request and a response. */ /** A queue that is used for correlating a request and a response. */
final Queue<HttpMethod> queue = QueueFactory.createQueue(HttpMethod.class); final Queue<HttpMethod> queue = new ConcurrentLinkedQueue<HttpMethod>();
/** If true, decoding stops (i.e. pass-through) */ /** If true, decoding stops (i.e. pass-through) */
volatile boolean done; volatile boolean done;

View File

@ -16,6 +16,7 @@
package org.jboss.netty.handler.codec.http; package org.jboss.netty.handler.codec.http;
import java.util.Queue; import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.buffer.ChannelBuffers;
@ -24,7 +25,6 @@ import org.jboss.netty.channel.Channels;
import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.MessageEvent;
import org.jboss.netty.channel.SimpleChannelHandler; import org.jboss.netty.channel.SimpleChannelHandler;
import org.jboss.netty.handler.codec.embedder.EncoderEmbedder; import org.jboss.netty.handler.codec.embedder.EncoderEmbedder;
import org.jboss.netty.util.internal.QueueFactory;
/** /**
* Encodes the content of the outbound {@link HttpResponse} and {@link HttpChunk}. * Encodes the content of the outbound {@link HttpResponse} and {@link HttpChunk}.
@ -49,7 +49,7 @@ import org.jboss.netty.util.internal.QueueFactory;
*/ */
public abstract class HttpContentEncoder extends SimpleChannelHandler { public abstract class HttpContentEncoder extends SimpleChannelHandler {
private final Queue<String> acceptEncodingQueue = QueueFactory.createQueue(String.class); private final Queue<String> acceptEncodingQueue = new ConcurrentLinkedQueue<String>();
private volatile EncoderEmbedder<ChannelBuffer> encoder; private volatile EncoderEmbedder<ChannelBuffer> encoder;
/** /**

View File

@ -23,6 +23,7 @@ import java.util.Set;
import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadFactory;
@ -45,7 +46,6 @@ import org.jboss.netty.logging.InternalLoggerFactory;
import org.jboss.netty.util.DefaultObjectSizeEstimator; import org.jboss.netty.util.DefaultObjectSizeEstimator;
import org.jboss.netty.util.ObjectSizeEstimator; import org.jboss.netty.util.ObjectSizeEstimator;
import org.jboss.netty.util.internal.ConcurrentIdentityHashMap; import org.jboss.netty.util.internal.ConcurrentIdentityHashMap;
import org.jboss.netty.util.internal.QueueFactory;
import org.jboss.netty.util.internal.SharedResourceMisuseDetector; import org.jboss.netty.util.internal.SharedResourceMisuseDetector;
/** /**
@ -227,7 +227,7 @@ public class MemoryAwareThreadPoolExecutor extends ThreadPoolExecutor {
ThreadFactory threadFactory) { ThreadFactory threadFactory) {
super(corePoolSize, corePoolSize, keepAliveTime, unit, super(corePoolSize, corePoolSize, keepAliveTime, unit,
QueueFactory.createQueue(Runnable.class), threadFactory, new NewThreadRunsPolicy()); new LinkedBlockingQueue<Runnable>(), threadFactory, new NewThreadRunsPolicy());
if (objectSizeEstimator == null) { if (objectSizeEstimator == null) {
throw new NullPointerException("objectSizeEstimator"); throw new NullPointerException("objectSizeEstimator");

View File

@ -19,6 +19,7 @@ import java.util.IdentityHashMap;
import java.util.Queue; import java.util.Queue;
import java.util.Set; import java.util.Set;
import java.util.WeakHashMap; import java.util.WeakHashMap;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadFactory;
@ -31,7 +32,6 @@ import org.jboss.netty.channel.ChannelState;
import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ChannelStateEvent;
import org.jboss.netty.util.ObjectSizeEstimator; import org.jboss.netty.util.ObjectSizeEstimator;
import org.jboss.netty.util.internal.ConcurrentIdentityWeakKeyHashMap; import org.jboss.netty.util.internal.ConcurrentIdentityWeakKeyHashMap;
import org.jboss.netty.util.internal.QueueFactory;
/** /**
* A {@link MemoryAwareThreadPoolExecutor} which makes sure the events from the * A {@link MemoryAwareThreadPoolExecutor} which makes sure the events from the
@ -280,7 +280,7 @@ public class OrderedMemoryAwareThreadPoolExecutor extends
} }
protected final class ChildExecutor implements Executor, Runnable { protected final class ChildExecutor implements Executor, Runnable {
private final Queue<Runnable> tasks = QueueFactory.createQueue(Runnable.class); private final Queue<Runnable> tasks = new ConcurrentLinkedQueue<Runnable>();
private final AtomicBoolean isRunning = new AtomicBoolean(); private final AtomicBoolean isRunning = new AtomicBoolean();
public void execute(Runnable command) { public void execute(Runnable command) {

View File

@ -17,6 +17,7 @@ package org.jboss.netty.handler.queue;
import java.io.IOException; import java.io.IOException;
import java.util.concurrent.BlockingQueue; import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffer;
@ -29,7 +30,6 @@ import org.jboss.netty.channel.ExceptionEvent;
import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.MessageEvent;
import org.jboss.netty.channel.SimpleChannelUpstreamHandler; import org.jboss.netty.channel.SimpleChannelUpstreamHandler;
import org.jboss.netty.util.internal.DeadLockProofWorker; import org.jboss.netty.util.internal.DeadLockProofWorker;
import org.jboss.netty.util.internal.QueueFactory;
/** /**
* Emulates blocking read operation. This handler stores all received messages * Emulates blocking read operation. This handler stores all received messages
@ -77,11 +77,10 @@ public class BlockingReadHandler<E> extends SimpleChannelUpstreamHandler {
private volatile boolean closed; private volatile boolean closed;
/** /**
* Creates a new instance with the default unbounded {@link BlockingQueue} * Creates a new instance with {@link LinkedBlockingQueue}
* implementation.
*/ */
public BlockingReadHandler() { public BlockingReadHandler() {
this(QueueFactory.createQueue(ChannelEvent.class)); this(new LinkedBlockingQueue<ChannelEvent>());
} }
/** /**

View File

@ -21,6 +21,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Queue; import java.util.Queue;
import java.util.concurrent.BlockingQueue; import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ConcurrentLinkedQueue;
import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.buffer.ChannelBuffers;
@ -36,7 +37,6 @@ import org.jboss.netty.channel.MessageEvent;
import org.jboss.netty.channel.SimpleChannelHandler; import org.jboss.netty.channel.SimpleChannelHandler;
import org.jboss.netty.channel.socket.nio.NioSocketChannelConfig; import org.jboss.netty.channel.socket.nio.NioSocketChannelConfig;
import org.jboss.netty.util.HashedWheelTimer; import org.jboss.netty.util.HashedWheelTimer;
import org.jboss.netty.util.internal.QueueFactory;
/** /**
* Emulates buffered write operation. This handler stores all write requests * Emulates buffered write operation. This handler stores all write requests
@ -185,15 +185,14 @@ public class BufferedWriteHandler extends SimpleChannelHandler implements LifeCy
} }
/** /**
* Creates a new instance with the default unbounded {@link BlockingQueue} * Creates a new instance with {@link ConcurrentLinkedQueue}
* implementation.
* *
* @param consolidateOnFlush * @param consolidateOnFlush
* {@code true} if and only if the buffered write requests are merged * {@code true} if and only if the buffered write requests are merged
* into a single write request on {@link #flush()} * into a single write request on {@link #flush()}
*/ */
public BufferedWriteHandler(boolean consolidateOnFlush) { public BufferedWriteHandler(boolean consolidateOnFlush) {
this(QueueFactory.createQueue(MessageEvent.class), consolidateOnFlush); this(new ConcurrentLinkedQueue<MessageEvent>(), consolidateOnFlush);
} }
/** /**

View File

@ -24,6 +24,7 @@ import java.nio.channels.DatagramChannel;
import java.nio.channels.SocketChannel; import java.nio.channels.SocketChannel;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.Queue; import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -54,7 +55,6 @@ import org.jboss.netty.logging.InternalLogger;
import org.jboss.netty.logging.InternalLoggerFactory; import org.jboss.netty.logging.InternalLoggerFactory;
import org.jboss.netty.util.internal.DetectionUtil; import org.jboss.netty.util.internal.DetectionUtil;
import org.jboss.netty.util.internal.NonReentrantLock; import org.jboss.netty.util.internal.NonReentrantLock;
import org.jboss.netty.util.internal.QueueFactory;
/** /**
* Adds <a href="http://en.wikipedia.org/wiki/Transport_Layer_Security">SSL * Adds <a href="http://en.wikipedia.org/wiki/Transport_Layer_Security">SSL
@ -199,7 +199,7 @@ public class SslHandler extends FrameDecoder
int ignoreClosedChannelException; int ignoreClosedChannelException;
final Object ignoreClosedChannelExceptionLock = new Object(); final Object ignoreClosedChannelExceptionLock = new Object();
private final Queue<PendingWrite> pendingUnencryptedWrites = new LinkedList<PendingWrite>(); private final Queue<PendingWrite> pendingUnencryptedWrites = new LinkedList<PendingWrite>();
private final Queue<MessageEvent> pendingEncryptedWrites = QueueFactory.createQueue(MessageEvent.class); private final Queue<MessageEvent> pendingEncryptedWrites = new ConcurrentLinkedQueue<MessageEvent>();
private final NonReentrantLock pendingEncryptedWritesLock = new NonReentrantLock(); private final NonReentrantLock pendingEncryptedWritesLock = new NonReentrantLock();
private volatile boolean issueHandshake; private volatile boolean issueHandshake;

View File

@ -20,6 +20,7 @@ import static org.jboss.netty.channel.Channels.*;
import java.io.IOException; import java.io.IOException;
import java.nio.channels.ClosedChannelException; import java.nio.channels.ClosedChannelException;
import java.util.Queue; import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.buffer.ChannelBuffers;
@ -38,7 +39,6 @@ import org.jboss.netty.channel.LifeCycleAwareChannelHandler;
import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.MessageEvent;
import org.jboss.netty.logging.InternalLogger; import org.jboss.netty.logging.InternalLogger;
import org.jboss.netty.logging.InternalLoggerFactory; import org.jboss.netty.logging.InternalLoggerFactory;
import org.jboss.netty.util.internal.QueueFactory;
/** /**
* A {@link ChannelHandler} that adds support for writing a large data stream * A {@link ChannelHandler} that adds support for writing a large data stream
@ -79,7 +79,7 @@ public class ChunkedWriteHandler
private static final InternalLogger logger = private static final InternalLogger logger =
InternalLoggerFactory.getInstance(ChunkedWriteHandler.class); InternalLoggerFactory.getInstance(ChunkedWriteHandler.class);
private final Queue<MessageEvent> queue = QueueFactory.createQueue(MessageEvent.class); private final Queue<MessageEvent> queue = new ConcurrentLinkedQueue<MessageEvent>();
private volatile ChannelHandlerContext ctx; private volatile ChannelHandlerContext ctx;
private final AtomicBoolean flush = new AtomicBoolean(false); private final AtomicBoolean flush = new AtomicBoolean(false);

View File

@ -24,6 +24,7 @@ import org.jboss.netty.logging.InternalLoggerFactory;
* This factory should be used to create the "optimal" {@link BlockingQueue} * This factory should be used to create the "optimal" {@link BlockingQueue}
* instance for the running JVM. * instance for the running JVM.
*/ */
@Deprecated
public final class QueueFactory { public final class QueueFactory {
private static final boolean useUnsafe = DetectionUtil.hasUnsafe(); private static final boolean useUnsafe = DetectionUtil.hasUnsafe();