概述
对协程的技术已经觊觎很久,他有高性能的优点,但目前工具对他支持的不是很好,调试繁琐。苦于运维和调试比较困难,一直望而却步。恰逢十一,决心攻下这块碉堡。这边文章只是个引子,后续会做更详细的描述,不断完善。贴出实践的经验。
Java里成熟一点的框架属kilim,这个发音让我想起了俄罗斯的克林姆林宫。
顺便欣赏下美景吧。
确实豪华!
进程,线程,协程。简单理解如下。
进程:操作系统级别的,独占的资源比较多。是操作系统层面的并发。
线程:在一个进程中,共享进程的资源且线程之间又可以独立。是应用程序层面的并发。
协程:在一个线程中,共享线程的资源,避免了上下文切换,是用户级别的并发。
模型
Task,一个协程,重写execute方法。
Mailbox,协程之间的消息传递。他有3个重要的方法:
get()/set():阻塞协程,不阻塞线程。
getb()/setb():阻塞线程。
getnb()/setnb():不阻塞协程,也不阻塞线程。
环境搭建
难点在于支持持续集成,因为他需要织入class字节码。官方给的demo是用ant来写的。所以笔者结合经验,想到了maven的一个支持ant的插件maven-antrun-plugin,指定build.xml即可。执行ant插件,肯定要在编译之后,才可以织入class,因此有个语法很关键
<execution>
<phase>compile</phase>
<configuration>
<tasks>
<ant antfile="build.xml" target="weave" />
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
其中phase节点的意思是,在compile之后执行。而在build里面,只写了weave一个target,其他的是用于独立运行ant使用,并非给maven-antrun-plugin插件使用。关于kilim的jar包,我们需要自行安装到私服中,或者本地仓库。每次调试的时候,都需要在eclipse显示的执行mvn package才可以,所以从架构角度来讲,因为做成一个独立的jar包,就会方便调试。
其他
参考猫头哥另外一篇文章:http://phl.iteye.com/blog/1522366,kilim源码安装到仓库,支持javadoc和java-source需要配置插件和源码目录<sourceDirectory>src</sourceDirectory>,kilim源码不是个标准的maven工程。
官方例子中,有些指令写的不对,kilim必须要用jdk7
切换到源码目录,命令行处理方式如下
D:\project\eclipse3.6\kilim-1.0>
javac -cp kilim.jar -d D:\project\eclipse3.6\kilim-1.0\classes D:\project\eclipse3.6\kilim-1.0\examples\kilim\examples\SimpleTask.java
java -cp kilim.jar;libs\asm-all-4.1.jar;$CLASSPATH -d D:\project\eclipse3.6\kilim-1.0\classes kilim.tools.Weaver D:\project\eclipse3.6\kilim-1.0\classes\kilim\examples\SimpleTask.class
java -cp kilim.jar;D:\project\eclipse3.6\kilim-1.0\classes;$CLASSPATH kilim.examples.SimpleTask
参考资料
http://www.ibm.com/developerworks/cn/java/j-javadev2-7.html
http://segmentfault.com/a/1190000000697487
http://yueyemaitian.iteye.com/blog/1745690
- 描述: 内室
- 大小: 246.6 KB
- 描述: 室外
- 大小: 221 KB
分享到:
相关推荐
NULL 博文链接:https://eleopard.iteye.com/blog/1750384
JAVA版本他的系统源码Kilim :JVM 的延续、纤维、Actor 和消息传递 Kilim 由 2 个主要组件组成: Kilim weaver 修改已编译的 java 类的字节码,启用一种方法来保存它的状态并放弃对其线程的控制,即协同多任务 Kilim...
因此,在 Kilim 中创建并发类就像在 Java 中实现 Runnable 或扩展 Thread 一样简单。只是使用 Runnable 或 Thread 的附加实体(比如关键字 synchronized)更少了。 最后,Kilim 的魔力是由一个称为 weaver 的后期...
协程(Coroutine)理论上而言能够大幅度提升java应用所能支撑的并发量,目前java尚不能从语言层次上支持Coroutine,在Sun JDK7尚未正式发布的情况下如希望在java中使用Coroutine,Scala或Kilim是可行的选择。
actor的一种实现,由于官网被屏蔽,所以上传到这里供大家下载
Coroutine是基于Kilim/Promise JDeferred的协程式驱动框架,基于Apache Zookeeper的分布式规则存储和动态规则变更通知。 主要特性: 1. 基于微服务框架理念设计 2. 支持同步/异步调用 3. 支持串行/并行调用 4....
具有Lindenmayer系统的程序性Kilim主题生成