Eclipse的字符串分区共享优化机制 - 编程入门网
ngPoolJob == null)
stringPoolJob = new StringPoolJob(); // Singleton 模式
stringPoolJob.addStringPoolParticipant(participant, rule);
}
}
//
// org.eclipse.core.internal.runtime.StringPoolJob
//
public class StringPoolJob extends Job
{
private static final long INITIAL_DELAY = 10000;//five seconds
private Map participants = Collections.synchronizedMap(new HashMap(10));
public void addStringPoolParticipant(IStringPoolParticipant participant, ISchedulingRule rule) {
participants.put(participant, rule);
if (sleep())
wakeUp(INITIAL_DELAY);
}
public void removeStringPoolParticipant(IStringPoolParticipant participant) {
participants.remove(participant);
}
}
Eclipse的字符串分区共享优化机制(5)时间:2011-01-03此任务将在合适的时候,为每个注册的分区进行共享优化。 StringPoolJob 类型是分区任务的代码所在,其底层实现是通过 Eclipse 的任务调度机制。关于 Eclipse 的任务调度,有兴趣的朋友可以参考 Michael Valenta (IBM) 的 On the Job: The Eclipse Jobs API 一文。 这里需要了解的是 Job 在 Eclipse 里,被作为一个异步后台任务进行调度,在时间或资源就绪的情况下,通过调用其 Job.run 方法执行。可以说 Job 非常类似一个线程,只不过是基于条件进行调度,可通过后台线程池进行优化罢了。而这里任务被调度的条件,一方面是任务自身的调度时间因素,另一方面是通过 ISchedulingRule 接口提供的任务资源依赖关系。如果一个任务与当前正在运行的任务传统,则将被挂起直到冲突被缓解。而 ISchedulingRule 接口本身可以通过 composite 模式进行组合,描述复杂的任务依赖关系。 在具体完成任务的 StringPoolJob.run 方法中,将对所有字符串缓冲分区的调度条件进行合并,以便在条件允许的情况下,调用 StringPoolJob.shareStrings 方法完成实际工作。 代码:
StringPoolJob.shareStrings 方法只是简单的遍历所有分区,调用其根 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |