-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ForkJoinPool提交的任务是一个runnable类型的,请问这种可以直接把runnable转成ttlRunnable来达到开启ttl的目的吗? #384
Comments
PS:ForkJoinPool有不风格的用法;这些不同用法本身的区别,可以先查资料了解。 |
先介绍下背景:
目前解决方案: 一、将 二、通过反射机制,将 public void execute(Runnable task) {
if (task == null) throw new NullPointerException();
ForkJoinTask<?> job;
if (task instanceof ForkJoinTask<?>) // avoid re-wrap
job = (ForkJoinTask<?>) task;
else
job = new ForkJoinTask.RunnableExecuteAction(task);
externalPush(job);
} 目前看两种方式都没成功,不知道是哪块理解和使用不到位,期待您的回复。 |
上面『通过反射机制 转换』,你的说明和代码少 & 问题相对复杂,不能清楚理解。 下面假设在 runnable = TtlRunnable.get(runnable); 作为方法第一行,以在方法入口将参数 简单看来(具体要展开细挖),在入口转成 即,这样的转换修改可能会影响
|
性能优化那些事(3) 这篇文章提到:
@DockerFan 可以看看:具体解决到什么程度、是不是有可以参考借鉴的。 关于
|
先 close 了;有进一步信息或问题可以继续讨论。 |
@DockerFan 之前我自己做了一个方案,分两步
这步由于涉及到添加字段,如果类已加载则会失效,必须保障在类初始化之前进行增强。 |
debug看业务代码ForkJoinPool的execute方法里的传参是个runnable类型,那可以把一个ForkJoinTask的任务强转成一个runnable,然后处理成ttlRunnable类型这样来开启ttl吗?
The text was updated successfully, but these errors were encountered: