public void testFunction(Object obj) {
Runnable runnable = () -> {使用obj参数做一些操作}
TaskService.execute(runnable);
return ;
}
现在有个问题,如果在短时间内多次call这个函数,每次传入的obj参数都不同,可能会出现每个runnable中使用的object都是最后一次调用函数时传的参数,请问这种现象有没有个特定的名字,百度了一顿没有搜到,有没有什么方法解决呢?
5 个解决方案
#1
闭包延迟绑定,obj是引用,线程异步处理的时候就可能是最后一个。可以把obj做复制,参数传递到lambda,互不干扰
#2
你确定每次传入的object是不一样的吗?
#3
#4
是的。。。其实就是给不同的用户发消息,但是如果短时间内收到多条请求,可能就只会以最后一次为准
#5
好的 我去试一下,谢谢!
#1
闭包延迟绑定,obj是引用,线程异步处理的时候就可能是最后一个。可以把obj做复制,参数传递到lambda,互不干扰
#2
你确定每次传入的object是不一样的吗?
#3
#4
是的。。。其实就是给不同的用户发消息,但是如果短时间内收到多条请求,可能就只会以最后一次为准
#5
好的 我去试一下,谢谢!