在学习Python中yield时顺带了解了一下Coroutines.
在多任务系统中,可以采取两种调度方式:抢占式preemptive和协作式cooperative,在java里,我们对前一种应该比较熟悉,jdk里面的多线程编程都是采取的这种方式。Java现在还不能在语言层面支持后一种方式。可以使用一些开源库来实现coroutines,比如Kilim,参考文章:
http://www.ibm.com/developerworks/cn/java/j-javadev2-7.html
wiki对coroutines的定义为:
In computer science, coroutines are program components that generalize subroutines to allow multiple entry points for suspending and resuming execution at certain locations. Coroutines are well-suited for implementing more familiar program components such as cooperative tasks, iterators, inifnite lists and pipes.
yield表达式主要用来定义一个generator函数,并且只能用在函数体内。