异步扩展javaswt树

异步扩展javaswt树,java,asynchronous,tree,swt,Java,Asynchronous,Tree,Swt,我的SWT树有问题。它包含许多叶子,这使得展开一个项目非常耗时。有时我甚至需要展开所有项目。有没有办法异步扩展它?我曾尝试在显示器上使用asyncExec()将expandAll()放入run()方法中,但没有任何帮助。它不能解决第一个问题,我只想扩展一个项目。有什么想法吗 附加节点:项目的缓慢扩展仅在我第一次扩展它时发生。同一项目的所有后续扩展(折叠后)都很快。我通过将内容提供程序更改为ILazyTreeContentProvider解决了大型树的性能问题。如果您必须立即展开完整的树,这将没有


我的SWT树有问题。它包含许多叶子,这使得展开一个项目非常耗时。有时我甚至需要展开所有项目。有没有办法异步扩展它?我曾尝试在显示器上使用
asyncExec()
expandAll()
放入
run()
方法中,但没有任何帮助。它不能解决第一个问题,我只想扩展一个项目。有什么想法吗


附加节点:项目的缓慢扩展仅在我第一次扩展它时发生。同一项目的所有后续扩展(折叠后)都很快。

我通过将内容提供程序更改为
ILazyTreeContentProvider解决了大型树的性能问题。如果您必须立即展开完整的树,这将没有帮助


另一种选择是:仔细查看您的内容和标签提供商。可能它们的操作太昂贵,如果缓存或预先计算树的某些信息,则可以加快速度。例如,如果您有一个普通(非惰性)的内容提供程序从数据库(一个接一个)加载项目,则展开树将花费永远的时间…

您是否在UI线程中加载模型项目?理想情况下,您应该在非UI线程中加载模型项,然后使用UI线程中的项更新树。

我发现了问题:CheckStateProvider是瓶颈(使用了CheckboxTreeViewer)。解决方案是散列查找:
treeViewer.setUseHashlookup(true)