概述
对协程的技术已经觊觎很久,他有高性能的优点,但目前工具对他支持的不是很好,调试繁琐。苦于运维和调试比较困难,一直望而却步。恰逢十一,决心攻下这块碉堡。这边文章只是个引子,后续会做更详细的描述,不断完善。贴出实践的经验。
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
分享到:
相关推荐
协程Coroutine和Kilim是两个与并发编程相关的概念,主要在Java开发环境中被讨论。在现代软件系统中,多线程和并发处理是提升性能和响应能力的关键技术。协程提供了一种轻量级的并发模型,它比传统的线程更高效,内存...
总结起来,尽管Java自身尚未在语言层面内置协程支持,但通过使用像Scala和Kilim这样的第三方工具,开发者可以在Java环境中实现类似协程的功能,以提升并发性能。随着技术的发展,未来的Java版本可能会考虑引入对协程...
JAVA版本他的系统源码Kilim :JVM 的延续、纤维、Actor 和消息传递 Kilim 由 2 个主要组件组成: Kilim weaver 修改已编译的 java 类的字节码,启用一种方法来保存它的状态并放弃对其线程的控制,即协同多任务 Kilim...
因此,在 Kilim 中创建并发类就像在 Java 中实现 Runnable 或扩展 Thread 一样简单。只是使用 Runnable 或 Thread 的附加实体(比如关键字 synchronized)更少了。 最后,Kilim 的魔力是由一个称为 weaver 的后期...
总之,kilim是一个强大的并发库,为Java开发者提供了一种新颖且高效的并发编程方式。通过理解并掌握kilim,开发者可以更好地应对现代计算环境中的并发挑战,设计出更具可扩展性和性能的应用程序。
该项目是一款基于Kilim、Promise JDeferred、Zookeeper和Spring Boot技术的协程驱动分布式调用聚合框架。源码包含223个文件,涵盖143个Java源文件、33个XML配置文件、13个GIF图片、7个JAR包、5个批处理脚本、4个属性...
Coroutine是基于Kilim/Promise JDeferred的协程式驱动框架,基于Apache Zookeeper的分布式规则存储和动态规则变更通知。 主要特性: 1. 基于微服务框架理念设计 2. 支持同步/异步调用 3. 支持串行/并行调用 4....
《kilim-motifs:基于Lindenmayer系统的程序化Kilim图案生成》 在IT领域,艺术与编程的交汇点诞生了“生成艺术”这一概念,它将计算机编程技术应用于艺术创作,使得艺术家可以通过编写代码来创造出独特的视觉作品。...
`pom.xml`中包含了项目依赖,Jungle Server Core支持协程(基于Kilim)和线程池模式。通过`<kilim.weave.required>`标志控制,为`true`表示使用协程模式。在这种模式下,需要特定版本的`maven-rar-plugin`支持。 ##...
根据文档中的信息,通过公式 \(Ilim = KILIM / 301R\) 可以计算出不同条件下的最大充电电流。 - KILIM/Min = 440 - KILIM/Tpy = 485 - KILIM/Max = 530 - 充电电流限制(Ilim)范围为: - Ilim/Min = 1.46A - ...