java上的协程

最近几天,有时间查看了一下java的中协程。

在java中大大小小的协程框架竟然有20多个,-.-!

总的来说java本身不支持协程,因此需要在vm级别进行修改才可以支持协程。

vm修改,分为两种,一种是直接修改生成的class bytecode如kilim之类。

另一类是直接运行在vm上的语言级别的支持,比如:akka。

kilim和akka也是目前公认的性能最好的框架。

我先测试了一下kilim,确实非常不错。多线程完全避免了线程切换和内存锁,而且使用url和sleep也不会阻塞线程运行。

我的电脑是8核cpu,在kilim中使用sleep,达到8个时会被线程阻塞。查找下解决方案。

我在kilim中使用的是Thread.sleep,如果改为使用kilim自带的sleep,则不会阻塞线程。

基本上搞明白了,kilim只是将线程改为了协程,避免了线程的上下文切换,但如果计算会阻塞,依旧会阻塞kilim,看来,httpclient及数据库操作和io需要改为non-blocking,才可以发挥kilim的全部性能。

kilim中还需要解决同步访问数据库、操作文件等问题,这些都必须改为non-blocking。

接着尝试下将server改为kilim,比较下性能。

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>