假设我提供了一个函数,比如runByChannel
,我打算将一个lambda发送到一个通道以供执行,然后使用CompletableDefined来接收结果.我需要避免的一个场景是在runByChannel执行的lambda中再次调用runByChannel.这可能导致僵局.
在非协程环境中,您可以使用ThreadLocal变量来设计一个标志,指示函数是否已经进入当前线程.您每次进入时都会判断这面旗帜.然而,在协程环境中,线程调度不是固定的,所以我认为ThreadLocal没有什么用处.有没有更好的办法?注意,我不能设计参数链来表示条目的数量,因为runByChannel将在中间调用其他函数,并且该参数不能连续向下传递.