disruptor案列
来源:互联网 发布:淘宝关小黑屋 编辑:程序博客网 时间:2024/06/05 10:07
<dependency> <groupId>com.lmax</groupId> <artifactId>disruptor</artifactId> <version>3.3.6</version></dependency>
类1:封装数据对象
public class Data { private int num; public int getNum() { return num; } public void setNum(int num) { this.num = num; }}
类2:消费者
import com.lmax.disruptor.WorkHandler;public class Customer implements WorkHandler<Data>{ public void onEvent(Data event) throws Exception { System.out.println(Thread.currentThread().getName()+"|"+event.getNum()); }}
类3:消费者工厂(用来初始化环形结构中的对象)
import com.lmax.disruptor.EventFactory;public class DataFactory implements EventFactory<Data>{ public Data newInstance() { return new Data(); }}
类4:生产者
import com.lmax.disruptor.RingBuffer;public class Producer { private RingBuffer<Data> ringBuffer; public Producer(RingBuffer<Data> ringBuffer) { this.ringBuffer = ringBuffer; } public void push(int num){ long seq = ringBuffer.next(); try { Data data = ringBuffer.get(seq); data.setNum(num); } finally { ringBuffer.publish(seq); } }}
类5:main
import java.util.concurrent.Executors;import com.lmax.disruptor.RingBuffer;import com.lmax.disruptor.dsl.Disruptor;public class Test { @SuppressWarnings("unchecked") public static void main(String[] args) { Disruptor<Data> disruptor = new Disruptor<Data>(new DataFactory(), 1024, Executors.defaultThreadFactory()); disruptor.handleEventsWithWorkerPool(new Customer(),new Customer()); disruptor.start(); RingBuffer<Data> ringBuffer = disruptor.getRingBuffer(); Producer producer = new Producer(ringBuffer); for (int i = 0; i < 100; i++) { producer.push(i); } disruptor.shutdown(); }}
阅读全文
0 0
- disruptor案列
- Disruptor
- disruptor
- disruptor
- disruptor
- disruptor
- disruptor
- Disruptor
- Disruptor
- Disruptor
- Disruptor
- Disruptor
- Disruptor
- Disruptor
- disruptor
- Disruptor译文
- disruptor流程
- Disruptor入门
- 哭笑不得的找不到id-R.id.
- Python的各种if
- 字符设备驱动-同步互斥阻塞
- js获取下一个标签
- AsyncTaskDemo
- disruptor案列
- 结合个人经历总结的前端入门方法
- Si6000 Controlled Impedance Field Solver V3.0
- java project jar包Linux环境执行
- glide的缓存策略
- 关于安卓中时间的计算(求上个月的今天)
- js 字符串操作函数
- springAop之 记录登入日志
- VC++得到系统特殊文件夹路径