由买买提看人间百态

topics

全部话题 - 话题: worker1
(共0页)
o**2
发帖数: 168
1
来自主题: Programming版 - FMP 进驻 Programming 版
会用OO编程的应该就会用FM编程,因为FM可以被当作utilities来用,门坎很低。你只
需要在你需要的地方加一点点FM就可以了。
比如说你有一段程序如下,其中的两个worker objects做的都是耗时的工作。因为是顺
序执行的,程序要花25秒才能到300行。
100 Object result1 = worker1.do10seconds();
200 Object result2 = worker2.do15seconds();
300 makeUseOf(result1, result2);
不管你的整个程序或系统有多大,你可以只在这三行程序上使用FM编程。
// 必要的设置
50 Messenger messenger = new Messenger();
60 messenger.registerReceiver(worker1, "worker1", "do10seconds");
70 messenger.registerReceiver(worker2, "worker2", "do15seconds");
100 IDeferredReturn result1 ... 阅读全帖
o**2
发帖数: 168
2
来自主题: Programming版 - FMP 进驻 Programming 版
首先,FMP和Java built-in的ExecutorService/Futre机制不是一个级别的东西。FMP在
这里只是展示它对imperative programming的支持。
其次,如果我们讨论的context仅仅限于这个例子的话,你的代码也缺了很多东西。要
写足了的话,会超过三行。
1)你要有一个ExecutorService,这相当与FMP的第50行;
2) worker1 & 2 必须是Callable或Runnable,改写的话,就超过了60/70这两行;
3) 你必须要有worker1和worker2的class源码,它们可能是同一个或两个不同classes;
4) 一个class里Callable或Runnable只能各implements一次;
5) messenger给它管理下的receivers(e.g. worker1&2)提供单线程环境。(这个有
点超出了刚才设定的context)
g*****g
发帖数: 34805
3
来自主题: Programming版 - FMP 进驻 Programming 版
While what you say is true with JDK, however, lots of frameworks already
remove
the boiler plate code. e.g.
@Async annotation in Spring is enough to make a method asynchronous and
hooked to a threadpool. I won't need 1) and 2) below, and if I don't have
the source code of worker1/2, I can always wrap worker1.doSomething in my
own method. So 3) and 4) are not applicable. 5) is more like actor model,
but that's not the requirement here.

classes;
b*********a
发帖数: 110
4
来自主题: Germany版 - 知道有啥么找房子的网站吗
哪个城市啊,很多地方有local的租房网站,全国性的再给你加下面几个。我刚在全德
房子最贵最难找的两个城市搞定住房问题,祝姐姐好运!
德国最大的房屋租赁website。大量信息,按区域分类,比如键入地址或邮编,可查看
方圆2-20km的空房,但许多要求中介费。
http://www.immobilienscout24.de/de/finden/...39D5962.worker1
价格适中,私人出租,大多不要求中介费。但刷新较慢。
http://www.wg-gesucht.de/wg-zimmer-in-Stut....124.0.0.0.html
不要求中介费,但信息不太多。
http://www.planethome.com/index.jsp
g*****g
发帖数: 34805
5
来自主题: Programming版 - FMP 进驻 Programming 版
Future f1 = worker1.do10seconds();
Future 22 = worker2.do15seconds();
Object result1 = f1.get();
Object result2 = f2.get();
makeUseOf(result1, result2);
This is Java built-in. And there's no 50-60-70 registration you had there.
I don't see your example simpler.
o**2
发帖数: 168
6
来自主题: Programming版 - FMP 进驻 Programming 版
messenger接受三种objects作为receiver:
1)POJO/POCO,来自没有任何metadata的class
2)带有IReceiver marker interface
3)带有ICallee marker interface
对第一种,也就是这里例子里的worker1&2,messenger直接用reflection来动态确定一
个method(根据当时arguments的数量和类型),并执行。
o**2
发帖数: 168
7
来自主题: Programming版 - FMP 进驻 Programming 版
我在8楼列举了一些FMP的优点,不过一时半会儿是解释不清的。所以我说“进驻
Programming 版”就是长期从各个方面介绍FMP的特色。
FMP的核心是active object,并规定active object是virtual的,要一个virtual
machine来realize它们,Messenger就是这样一个virtual machine。
如果把active object看成是一个interface,就可以更好理解用户的责任:用户需要实
现这个interface声明的function。(上面的例子中有两个activeobject:“worker1”
和“worker2”,它们的function分别是do10seconds和do15seconds。)
用户怎么做呢?这由Messenger来定,比如我提供的reference implementation中的
Messenger支持三种方式:POJO (via reflection),IReceiver,和ICallee。
FMP并不定义Messenger和用户之间的事,比如你完全可以开发一个你的Messenger,让
它支... 阅读全帖
(共0页)