java并发(三十四)协程kilim


 
概述 
对协程的技术已经觊觎很久,他有高性能的优点,但目前工具对他支持的不是很好,调试繁琐。苦于运维和调试比较困难,一直望而却步。恰逢十一,决心攻下这块碉堡。这边文章只是个引子,后续会做更详细的描述,不断完善。贴出实践的经验。 

Java里成熟一点的框架属kilim,这个发音让我想起了俄罗斯的克林姆林宫。 
顺便欣赏下美景吧。 

确实豪华! 


伦理片 http://www.dotdy.com/
进程,线程,协程。简单理解如下。 
进程:操作系统级别的,独占的资源比较多。是操作系统层面的并发。 
线程:在一个进程中,共享进程的资源且线程之间又可以独立。是应用程序层面的并发。 
协程:在一个线程中,共享线程的资源,避免了上下文切换,是用户级别的并发。 

模型 
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 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值