本文整理汇总了Java中com.lmax.disruptor.WorkerPool类的典型用法代码示例。如果您正苦于以下问题:Java WorkerPool类的具体用法?Java WorkerPool怎么用?Java WorkerPool使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
WorkerPool类属于com.lmax.disruptor包,在下文中一共展示了WorkerPool类的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: startup
import com.lmax.disruptor.WorkerPool; //导入依赖的package包/类
@Override
public void startup() {
EventBus eventBus = disruptorDispatchThread.getEventBus();
executorService = new NonOrderedQueuePoolExecutor(poolName, excutorSize);
cycleEventHandler = new CycleEventHandler[excutorSize];
for(int i = 0; i < excutorSize; i++){
cycleEventHandler[i] = new CycleEventHandler(eventBus);
}
RingBuffer ringBuffer = disruptorDispatchThread.getRingBuffer();
workerPool = new WorkerPool(ringBuffer, ringBuffer.newBarrier(), new FatalExceptionHandler(), cycleEventHandler);
ringBuffer.addGatingSequences(workerPool.getWorkerSequences());
workerPool.start(executorService);
// BatchEventProcessor<CycleEvent>[] batchEventProcessors = new BatchEventProcessor[excutorSize];
// for(int i = 0; i < excutorSize; i++){
// batchEventProcessors[i] = new BatchEventProcessor<>(ringBuffer, sequenceBarrier, cycleEventHandler[i]);
// ringBuffer.addGatingSequences(batchEventProcessors[i].getSequence());
//// executorService.submit(batchEventProcessors[i]);
// }
}
开发者ID:jwpttcg66,项目名称:game-executor,代码行数:23,代码来源:DisruptorExecutorService.java
示例2: createWorkerPool
import com.lmax.disruptor.WorkerPool; //导入依赖的package包/类
EventHandlerGroup<T> createWorkerPool(
final Sequence[] barrierSequences, final WorkHandler<? super T>[] workHandlers) {
final SequenceBarrier sequenceBarrier = ringBuffer.newBarrier(barrierSequences);
final WorkerPool<T> workerPool = new WorkerPool<T>(ringBuffer, sequenceBarrier, exceptionHandler, workHandlers);
consumerRepository.add(workerPool, sequenceBarrier);
return new EventHandlerGroup<T>(this, consumerRepository, workerPool.getWorkerSequences());
}
开发者ID:winwill2012,项目名称:disruptor-code-analysis,代码行数:8,代码来源:Disruptor.java
示例3: initialize
import com.lmax.disruptor.WorkerPool; //导入依赖的package包/类
@Override
public boolean initialize(EventsChannelConfig config)
{
super.initialize(config);
log.info("Initialize disruptor events channel " + config.getName() + " with " + config);
EventFactory<GridEvent> eventFactory = new DisruptorEventFactory();
int ringBufferSize = config.getBlockQueueMaxNumber();
int threadSize = config.getEventConsumerNumber();
int bufferSize = ringBufferSize;
if (Integer.bitCount(bufferSize) != 1)
{
bufferSize = (int) Math.pow(2, (int) (Math.log(ringBufferSize) / Math.log(2)));
log.warn("Change disruptor events channel " + config.getName() +
" buffer size from " + ringBufferSize + " to " + bufferSize);
}
if (bufferSize <= 0)
throw new GridException("Invalid disruptor ringbuffur size:" + ringBufferSize);
threadPool = Executors.newFixedThreadPool(threadSize);
ringBuffer = RingBuffer.createMultiProducer(eventFactory, bufferSize, new BlockingWaitStrategy());
SequenceBarrier sequenceBarrier = ringBuffer.newBarrier();
ExecutorService executor = Executors.newFixedThreadPool(10);
@SuppressWarnings("unchecked")
WorkHandler<GridEvent>[] workHandlers = new WorkHandler[threadSize];
for (int i = 0; i < threadSize; i++) {
WorkHandler<GridEvent> workHandler = new DisruptorEventsWorkHandler(getName());
workHandlers[i] = workHandler;
}
workerPool = new WorkerPool<GridEvent>(ringBuffer, sequenceBarrier,
new IgnoreExceptionHandler(), workHandlers);
workerPool.start(executor);
return true;
}
开发者ID:liulhdarks,项目名称:darks-grid,代码行数:34,代码来源:DisruptorEventsChannel.java
示例4: KafkaRpcServer
import com.lmax.disruptor.WorkerPool; //导入依赖的package包/类
public KafkaRpcServer(WorkerPool<ServerEvent> workerPool, RequestConsumer requestConsumer, ServerEventHandler eventHandler,
int workerThreads) {
this.workerPool = workerPool;
this.requestConsumer = requestConsumer;
this.eventHandler = eventHandler;
this.workerThreads = workerThreads;
}
开发者ID:devicehive,项目名称:devicehive-java-server,代码行数:8,代码来源:KafkaRpcServer.java
示例5: build
import com.lmax.disruptor.WorkerPool; //导入依赖的package包/类
public RpcServer build() {
final int workerThreads = 3;
Producer<String, Response> responseProducer = new KafkaProducer<>(producerProps, new StringSerializer(), producerValueSerializer);
final ServerEventHandler[] workHandlers = new ServerEventHandler[workerThreads];
IntStream.range(0, workerThreads).forEach(
nbr -> workHandlers[nbr] = new ServerEventHandler(requestHandler, responseProducer)
);
final WorkerPool<ServerEvent> workerPool = new WorkerPool<>(ServerEvent::new, new FatalExceptionHandler(), workHandlers);
RequestConsumer requestConsumer = new RequestConsumer(topic, consumerProps, consumerThreads, consumerValueDeserializer);
return new KafkaRpcServer(workerPool, requestConsumer, new ServerEventHandler(requestHandler, responseProducer), workerThreads);
}
开发者ID:devicehive,项目名称:devicehive-java-server,代码行数:13,代码来源:ServerBuilder.java
示例6: getWorkerPool
import com.lmax.disruptor.WorkerPool; //导入依赖的package包/类
public WorkerPool getWorkerPool() {
return workerPool;
}
开发者ID:jwpttcg66,项目名称:game-executor,代码行数:4,代码来源:DisruptorExecutorService.java
示例7: setWorkerPool
import com.lmax.disruptor.WorkerPool; //导入依赖的package包/类
public void setWorkerPool(WorkerPool workerPool) {
this.workerPool = workerPool;
}
开发者ID:jwpttcg66,项目名称:game-executor,代码行数:4,代码来源:DisruptorExecutorService.java
示例8: createWorkerPool
import com.lmax.disruptor.WorkerPool; //导入依赖的package包/类
EventHandlerGroup<T> createWorkerPool(final Sequence[] barrierSequences, final WorkHandler<T>[] workHandlers) {
final SequenceBarrier sequenceBarrier = ringBuffer.newBarrier(barrierSequences);
final WorkerPool<T> workerPool = new WorkerPool<T>(ringBuffer, sequenceBarrier, exceptionHandler, workHandlers);
consumerRepository.add(workerPool, sequenceBarrier);
return new EventHandlerGroup<T>(this, consumerRepository, workerPool.getWorkerSequences());
}
开发者ID:wen866595,项目名称:annotated-src,代码行数:7,代码来源:Disruptor.java
示例9: bulkLoad
import com.lmax.disruptor.WorkerPool; //导入依赖的package包/类
private static void bulkLoad(
final Cache cache, long entriesToLoad,double[] bbox)
{
final AtomicLong atomicLong = new AtomicLong();
final ValueHandler[] valueHandlers = new ValueHandler[]{
new ValueHandler(cache, atomicLong),
new ValueHandler(cache, atomicLong),
new ValueHandler(cache, atomicLong),
new ValueHandler(cache, atomicLong)
};
final ExecutorService executorService = Executors.newCachedThreadPool();
try
{
final RingBuffer<ValueEvent> ringBuffer =
RingBuffer.createSingleProducer(ValueEvent.EVENT_FACTORY,
4096,
new YieldingWaitStrategy());
final WorkerPool<ValueEvent> workerPool =
new WorkerPool<ValueEvent>(ringBuffer,
ringBuffer.newBarrier(),
new FatalExceptionHandler(),
valueHandlers);
workerPool.start(executorService);
try
{
publishLoadEvents(ringBuffer,entriesToLoad,bbox);
}
finally
{
workerPool.drainAndHalt();
}
}
finally
{
executorService.shutdown();
}
System.out.format("Put %d elements.", atomicLong.get());
}
开发者ID:lanimall,项目名称:Ehcache_LMAXBulkLoader,代码行数:42,代码来源:LaunchLoader.java
示例10: RequestQueueProcessor
import com.lmax.disruptor.WorkerPool; //导入依赖的package包/类
/**
* @param maxQueueSz
* @param numThreads
* @param name
*/
public RequestQueueProcessor(int maxQueueSz, int numThreads, String name) {
m_name = name;
m_maxQueueSz = maxQueueSz;
m_ringBuffer = RingBuffer.createMultiProducer(m_eventFactory,
normalizeBufferSize(m_maxQueueSz), new BlockingWaitStrategy());
m_barrier = m_ringBuffer.newBarrier();
m_numThreads = numThreads;
QueueProcessorWorkHandler[] handlers = new QueueProcessorWorkHandler[m_numThreads];
for (int i = 0; i < m_numThreads; i++) {
handlers[i] = new QueueProcessorWorkHandler();
}
m_worker = new WorkerPool(m_ringBuffer, m_barrier,
new QueueProcessorExceptionHandler(m_dropCounter, name),
handlers);
m_ringBuffer.addGatingSequences(m_worker.getWorkerSequences());
m_executor = Executors.newFixedThreadPool(m_numThreads,
new NameableThreadFactory(name));
m_ringBuffer = m_worker.start(m_executor);
}
开发者ID:pulsarIO,项目名称:jetstream,代码行数:35,代码来源:RequestQueueProcessor.java
注:本文中的com.lmax.disruptor.WorkerPool类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论