`
newzai
  • 浏览: 13412 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Apache Pivot 线程模型

阅读更多

Pivot 线程模型

每个pivot Application一般都 最多一个 GUI线程和 0个或者至少一个非GUI线程组成。

GUI 线程复杂组件界面的更新,只有在GUI线程才可以操作pivot 控件。因此你可以认为pivot的线程模型和大多数的GUI框架的线程模型是一样的,当线程模型。在非GUI线程操作组件对象及其属性时会引发运行时异常。更特殊的时Pivot的数据模型也是属于GUI线程一部分,比如操作 TreeView的treeData时,虽然treeData是一个List的对象,但是由于Pivot的MVC框架模型,是的M和V有了自动了关联,修改了M,V自动改变,因此不能在非GUI线程中直接修改一个控件持有的数据模型。当然,如果数据是独立于控件的,任何线程都可以修改,因此不会导致其关联视图控件的更新。因此在pivot Application中,经常需要涉及下面2个问题:
1.如何在GUI线程开启一个后台线程
 你可以使用传统的Java Thread开启一个线程。只不过在GUI界面中很难知道后台线程合适运行结束。
 可以使用org.apache.pivot.util.concurrent.Task和TaskListener等组合来启动一个后台线程,这样,Pivot GUI可以捕获到后台线程的执行结果。
2.如果在后台线程操作GUI组件
 后台线程是不能直接操作GUI组件的,需要封装一个Runable对象提交给GUI线程排队执行。通过调用ApplicationContext.queueCallback等方法实现。
 
 http://blog.csdn.net/chenxiaohong3905/archive/2010/01/26/5258549.aspx

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics