rcp 线程的使用

1、public void syncExec (Runnable runnable) {
Synchronizer synchronizer;
synchronized (Device.class) {
if (isDisposed ()) error (SWT.ERROR_DEVICE_DISPOSED);
synchronizer = this.synchronizer;
}
synchronizer.syncExec (runnable);
}




2、public void asyncExec (Runnable runnable) {
synchronized (Device.class) {
if (isDisposed ()) error (SWT.ERROR_DEVICE_DISPOSED);
synchronizer.asyncExec (runnable);
}
}


3、
public boolean readAndDispatch () {
checkDevice ();
lpStartupInfo = null;
drawMenuBars ();
runSkin ();
runDeferredLayouts ();
runPopups ();
if (OS.PeekMessage (msg, 0, 0, 0, OS.PM_REMOVE)) {
if (!filterMessage (msg)) {
OS.TranslateMessage (msg);
OS.DispatchMessage (msg);
}
runDeferredEvents ();
return true;
}
return isDisposed () || (runMessages && runAsyncMessages (false));
}


syncExec :是关于UI线程的同步方法。这个方法会将一个runnabale一个一个挨个执行完了才会执行
           UI主线程的任务    


asyncExec :是关于UI线程的异步方法。这个方法会将UI主线程的任务(接受到的事件等)执行完过后才会执行
            runnabale也是按照添加的队列顺序执行。




主要是在其他线程中要使用到UI线程时,方便使用。在非UI线程中是不能执行UI任务的

Job 的使用参加:

1、设置job的运行规则

        myjob1.setRule(Schedule_RULE);
	myjob2.setRule(Schedule_RULE);

 2、设置jobManager的线程分组

Job.getJobManager().cancel(MY_JOB_FAMILY); //取消所有属于MY_JOB_FAMILY的所有Job
Job.getJobManager().join(MY_JOB_FAMILY); //等待属于MY_JOB_FAMILY的所有Job结束
Job.getJobManager().sleep(MY_JOB_FAMILY); //将所有属于MY_JOB_FAMILY的Job转入睡眠状态
Job.getJobManager().wakeup(MY_JOB_FAMILY); //将所有属于MY_JOB_FAMILY的Job唤醒 
 
 3、设置延迟响应UI界面

	private final static Object UPDATE_UI_JOBFAMILY = new Object();
tableviewer. addSelectionChangedListener (new ISelectionChangedListener (){

	public void selectionChanged(SelectionChangedEvent event){
		Job.getJobManager().cancel(UPDATE_UI_JOBFAMILY);
		new UIJob("更新界面") {
            		protected IStatus runInUIThread (IProgressMonitor monitor) {
               		 	//更新界面
                			return Status.OK_STATUS; 
            		}

			public boolean belongsTo(Object family){
				return family== UPDATE_UI_JOBFAMILY;
			}
			
        		}.schedule(500);
	}
});
详细:

http://www.ibm.com/developerworks/cn/opensource/os-cn-eclipse-multithrd/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值