Leader/Follower相比较于普通的ThreadPool的优点
1、无需context switch,减少了线程间数据copy
2、无需维护一个队列,占用而外的内存空间
lf模式理解起来稍微有些困难,所以写了一个小的事例程序帮助自己理解
public class ThreadPool {
private final static Object monitor = new Object();
private final static int THREAD_POO_SIZE = 5;
private Reactor handleSet = new Reactor();
public ThreadPool(Reactor handleSet) {
this.handleSet = handleSet;
}
public void init() {
for (int i = 0; i < THREAD_POO_SIZE; i++) {
new WorkThread(this).start();
}
this.promoteNewLeader();
}
public void join() {
for (;;) {
waitToLeader();
// select, blocking
Handle handle = handleSet.select();
// promote new leader
promoteNewLeader();
// process handl
handleSet.handle(handle);
// reenter to next loop
}
}
private void waitToLeader() {
synchronized (monitor) {
try {
monitor.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void promoteNewLeader() {
synchronized (monitor) {
monitor.notify();
}
}
class WorkThread extends Thread {
ThreadPool tp;
public WorkThread(ThreadPool tp) {
this.tp = tp;
}
@Override
public void run() {
tp.join();
}
}
}
在lf模式中,线程有3种状态
它们通过以下两个方法来实现切换:
waitToLeader
promoteNewLeader
利用了java线程间通信的特性, 实现leader/follower线程的切换
目前java实现线程间通信,有两种方法:
1、Object.wait, Object.notify
2、Condition.await, Condition.signal
另一个疑问,就是要在系统初始化好后,调用promoteNewLeader,提升一个线程作为leader thread,监听事件的到来。
lf thread pool改进点:
1、thread pool大小可调节,可以参考ThreadPoolExecutor的实现
2、更多通用化,抽取变化点
Leader/Follower 论文参考:
http://www.kircher-schwanninger.de/michael/publications/lf.pdf
http://www.cse.wustl.edu/~schmidt/PDF/reactor-siemens.pdf
http://www.cse.wustl.edu/~schmidt/PDF/proactor.pdf
- 大小: 17.9 KB
分享到:
相关推荐
Leader-follower 算法的matlab算法实现
用MATLAB编写的leader_follower算法实现聚类的函数.希望能对大家有帮助....zip
在战场环境中,战术分队的队形在面对复杂静态或动态障碍物时难以较好地保持,针对此问题,提出了基于Leader-Follower算法的改进队形控制方法。在leader寻径阶段,通过在战场导航网格中应用两阶段路径搜索方法,先...
This is simulation of leader follower control system.
领航跟随编队控制设计编队避障的一些信息,包含避障
在Leader-follower框架下的多机器鱼系统队形控制中,针对Leader和Follower相对独立及落后机器鱼离队等问题,在传统的Leader-follower队形控制算法中引入模糊反馈控制器进行反馈调节,使得领航机器鱼Leader能定时检查...
下行异构网络中基于多领导者多跟随者博弈的功率控制算法,韩乔妮,杨博,异构网络(Heterogeneous networks, HetNets)是正在扩张的3G网络和新兴的4G网络的重要组成部分。然而,为了达到所有用户的服务质量(Quality ...
基于Leader-follower的处置突发事件队形变换方法研究,熊景,巩青歌,针对武警部队处置突发事件时的队形变换问题,提出了一种基于跟随领航者(Leader–follower)法的队形变换方法,该方法引入几何划分,对��
Leader-Follower Output Synchronization of Linear Heterogeneous Systems With Active Leader Using Reinforcement Learning
网络游戏-基于Ad-Hoc网络和leader-follower算法的多机器人编队方法.zip
它最终将支持包括:通过使用 etcd 的 leader / follower 配置集群,在语义上类似于 Kafka(但没有单个控制器,并且有更简单的配置和操作)更高级别的客户端,基于 Kafka 当前的客户端设计加密改进的客户端和扩展 API...
多智能体系统一阶有领导者实现一致性的matlab仿真代码
Consensus control of nonlinear leader-follower multi-agent systems with actuating disturbances
Leader–Follower Consensus of Multivehicle Wirelessly Networked Uncertain Systems Subject to Nonlinear Dynamics and Actuator Fault
iRpc介绍iRpc为一款基于Nio通信实现的轻量级高性能rpc框架,支持单机及leader-follower部署模式,配置简单,通信效率高。提供同步和异步(callBack模式)等多种消息发送方式,不依赖于第三方注册中心即可实现服务端自主...
Implementation of Leader-Follower Formation Control of a Team of Nonholonomic Mobile Robots
Leader-follower cooperative movement method for multiple amphibious spherical robots
This note studies the controllability of a leader-follower network of dynamic agents linked via neighbor rules. The leader is a particular agent acting as an external input to steer the other member ...