【JAVA新生】nio attach引发的问题

2014-10-02
阅读 5 分钟
4.3k
grizzly框架的作者曾经提到NIO框架不应该使用selection key的attach功能(链接)。理由是如果attach到了selection key上,而这个selection key对应的操作迟迟不能就绪(被select出来)。那么这些selection key所attach的附件都是被强引用的,从而无法被gc。如果有大量这样的selection key累积,程序就好像发生了内存泄漏...

【JAVA新生】echo server的第n种写法

2014-10-02
阅读 4 分钟
2.6k
基本上所有的网络应用都会示范一个tcp的echo写法。前面我们已经看到了如何使用协程和异步io来做tcp服务器的第一步,accept。下面是一个完整的echo server的实现(完整代码):

【JAVA新生】拿协程开始写个异步io应用

2014-09-29
阅读 4 分钟
5.4k
前面已经准备好了greenlet对应的Java版本了,一个删减后的kilim([链接])。接下来,就看怎么用协程来实现异步io了。首先,拿一段最最简单的tcp socket accept的代码:

【JAVA新生】kilim版的协程

2014-09-27
阅读 2 分钟
10.5k
试用了一下 [链接],发现它是基于JDK 1.7的(主要是fork join pool)。于是拿kilim的代码改了一个纯协程的版本出来。kilim的原始版本([链接])里所有的Task都与一个Scheduler绑定,而且官方的例子里都是讲怎么使用Mailbox做messaging的。这个路数和stackless python非常像。两个都是以提供scheduler和messaging为主要ap...

【协程原理】 - cPython的VM真变态

2014-09-15
阅读 2 分钟
3.8k
kilim在JVM上实现了协程,其实现看起来挺容易的:[链接] 在cPython上是否能够复制其技法呢?粗看上去,是很容易的,甚至比JVM更好实现:

【协程原理】 - Java中的协程

2014-09-13
阅读 3 分钟
18.8k
很长一段时间,我都很天真的认为python,特别是以gevent为代表的库,才是协程的乐土。Java里是没法实现协程,更别说实现stackless python这样可以pickle的协程的。Bong!咱真的是太井底之蛙了。 Java不但可以实现协程,而且还有很多个实现版本。不完全列表如下: