1 Reply Latest reply on Sep 19, 2007 5:55 PM by maxandersen

    Long running task in main thread causes GUI blocking

      Hello,
      Just something worth 2(euro)sents..

      I noticed that some long running task is run in the main thread which causes the GUI to block for too long (like in this case almost ½ minute ).

      Maybe you could use Eclipses builtin JOBS API http://www.eclipse.org/articles/Article-Concurrency/jobs-api.html to do the scanning in a JOB which runs in it's own thread (Worker-XX).


      Thread Name: main

      State: RUNNABLE
      Total blocked: 39 Total waited: 144

      Stack trace:
      java.io.UnixFileSystem.list(Native Method)
      java.io.File.list(File.java:973)
      org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1055)
      org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1100)
      org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1100)
      org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1100)
      org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1100)
      org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1100)
      org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1100)
      org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1100)
      org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1100)
      org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1100)
      org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1100)
      org.apache.tools.ant.DirectoryScanner.checkIncludePatterns(DirectoryScanner.java:856)
      org.apache.tools.ant.DirectoryScanner.scan(DirectoryScanner.java:817)
      - locked org.apache.tools.ant.DirectoryScanner@759a7f62
      org.jboss.ide.eclipse.as.core.model.descriptor.AntFileFilter.getIncludedFiles(AntFileFilter.java:25)
      org.jboss.ide.eclipse.as.core.model.descriptor.XPathQuery.loadResults(XPathQuery.java:81)
      org.jboss.ide.eclipse.as.core.model.descriptor.XPathQuery.getResults(XPathQuery.java:72)
      org.jboss.ide.eclipse.as.core.model.descriptor.XPathQuery.getFirstResult(XPathQuery.java:95)
      org.jboss.ide.eclipse.as.core.server.JBossServer.findPort(JBossServer.java:202)
      org.jboss.ide.eclipse.as.core.server.JBossServer.getJBossWebPort(JBossServer.java:195)
      org.jboss.ide.eclipse.as.core.server.JBossServer.getModuleRootURL(JBossServer.java:220)
      org.jboss.ide.eclipse.as.core.client.JBossLaunchAdapter.prepareHttpLaunchable(JBossLaunchAdapter.java:76)
      org.jboss.ide.eclipse.as.core.client.JBossLaunchAdapter.getLaunchable(JBossLaunchAdapter.java:39)
      org.eclipse.wst.server.core.internal.LaunchableAdapter.getLaunchable(LaunchableAdapter.java:61)
      org.jboss.tools.jst.web.browser.wtp.RunOnServerContext.getLaunchable(RunOnServerContext.java:99)
      org.jboss.tools.jst.web.browser.wtp.RunOnServerContext.getBrowserPrefix(RunOnServerContext.java:86)
      org.jboss.tools.jst.web.model.handlers.RunOnServerHandler$IPathSourceImpl.computeURL(RunOnServerHandler.java:39)
      org.jboss.tools.jst.web.browser.AbstractBrowserContext.computeURL(AbstractBrowserContext.java:92)
      org.jboss.tools.jst.web.browser.AbstractBrowserContext.updateRunPath(AbstractBrowserContext.java:85)
      org.jboss.tools.jst.web.browser.AbstractBrowserContext.setLastRunObject(AbstractBrowserContext.java:70)
      org.jboss.tools.jst.web.browser.AbstractBrowserContext.activateModel(AbstractBrowserContext.java:127)
      org.jboss.tools.jst.web.ui.action.RunPageActionDelegate.safeSelectionChanged(RunPageActionDelegate.java:87)
      org.jboss.tools.common.model.ui.action.AbstractModelActionDelegate$1.run(AbstractModelActionDelegate.java:35)
      org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
      org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:123)
      - locked org.eclipse.swt.widgets.RunnableLock@7221373f
      org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3296)
      org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2974)
      org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
      org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
      org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
      org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
      org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
      org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
      org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
      org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
      org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:153)
      org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
      org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
      org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
      org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
      sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      java.lang.reflect.Method.invoke(Method.java:597)
      org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:504)
      org.eclipse.equinox.launcher.Main.basicRun(Main.java:443)
      org.eclipse.equinox.launcher.Main.run(Main.java:1169)
      org.eclipse.equinox.launcher.Main.main(Main.java:1144)