還好,eclipse為我們開(kāi)發(fā)插件提供了一個(gè)方便的UI線程包,大大的簡(jiǎn)化了很多底層復(fù)雜的東西.先看看幾個(gè)簡(jiǎn)單的概念.
  1.SWT UI線程
  SWT用的是操作系統(tǒng)直接支持的線程模式,程序會(huì)在主程序里運(yùn)行一個(gè)時(shí)間循環(huán)并依次在這個(gè)線程里響應(yīng)事件.看下面這段代碼,UI線程就是創(chuàng)建Display的那個(gè)線程.
public static void main (String [] args) {
      Display display = new Display ();
      Shell shell = new Shell (display);
      shell.open ();
      // 開(kāi)始事件循環(huán)
      // 關(guān)掉窗口后
      while (!shell.isDisposed ()) {
         if (!display.readAndDispatch ())
            display.sleep ();
      }
      display.dispose ();
   }
  簡(jiǎn)單的小程序里,一個(gè)UI線程就能夠滿足需要了。但假如是長(zhǎng)時(shí)間的操作,你就最好不要用UI線程來(lái)做這些事,可以交給Job去做.它其實(shí)就是另外啟動(dòng)的線程,也就是等會(huì)我要說(shuō)的非UI線程.
  2、Job
  Job類由org.eclipse.core.runtime插件提供.它能夠讓客戶程序員輕松的在另外的線程中執(zhí)行代碼。看一個(gè)小例子:
  Job job = new Job("My First Job") {
     PRotected IStatus run(IProgressMonitor monitor) {
           System.out.println("Hello World (from a background job)");
           return Status.OK_STATUS;
        }
     };
  job.setPriority(Job.SHORT);
  job.schedule(); // start as soon as possible
  Job的默認(rèn)優(yōu)先級(jí)是Job.Long,這里例子中的優(yōu)先級(jí)要比它高,只要調(diào)用Job#schedule(),它就會(huì)盡快在另外的線程中運(yùn)行run()中的代碼。再看一個(gè)小例子:
final Job job = new Job("Long Running Job") {
        protected IStatus run(IProgressMonitor monitor) {
           try {
              while(hasMoreWorkToDo()) {
                 // do some work
                 // ...
              if (monitor.isCanceled()) return Status.CANCEL_STATUS;
             }
              return Status.OK_STATUS;
           } finally {
              schedule(60000); // start again in an hour
           }
        }
     };
  job.addJobChangeListener(new JobChangeAdapter() {
        public void done(IJobChangeEvent event) {
        if (event.getResult().isOK())
           postMessage("Job completed sUCcessfully");
           else
              postError("Job did not complete successfully");
        }
     });
  job.setSystem(true);
     job.schedule(); // start as soon as possible
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注