`
ujoc
  • 浏览: 48411 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

SWT 与 线程

阅读更多

用串口采集数据,然后把数据更新在swt.text上的时候会出错,大概意思是线程越界了。

一下是找到的资料和解决方法:

 

当你使用SWT创建一个SWT程序时,要考虑的一个重要因素就是所有的窗口小部件是如何与线程交互的。如果你熟悉Swing和AWT编程,那么以下内容会比较熟悉,不过某些重要的差异还是需要注意的。 
  一个被称为用户界面线程的单一的重要线程负责处理事件,调度它们到合适的窗口小部件,以及进行窗体描绘。没有了它,你的程序将无法做任何事情。你可能认为我们过去说过一些这方面的内容,我们的确曾经说过。 
  在AWT和Swing中,用户界面线程或事件处理线程对开发者是隐藏的。而在SWT中,创建消息泵的线程就成了用户界面线程。这个设计决定使得要将SWT插件插入Eclipse中变得可能。与Sun的方法背离的另一点是,SWT的设计允许拥有多于一个的事件调度线程。(这个功能极少用到,我们提到它只是为了完整起见。) 
  主线程就是用户界面线程,所以你不该执行任何复杂的或耗时的任务(如数据库访问)或者其他会阻塞线程的任务。相反的,你应该转到其他线程去执行那些操作。不这么做的话,将会严重影响你的用户界面的响应能力并且会给用户带来不便,这永远不是件好事。与此相关的事实就是,唯一允许调用SWT窗口小部件而不会引发SWTException异常的线程就是用户界面线程。 
  你也许想知道在你转到的线程完成之后如何更新用户界面。要做到这样,你要使用两个辅助方法,它们是显示类(Display)的一部分:asyncExec()和syncExec()。(Swing用户注意:这些方法和Swing工具包类中的invokeLater()和invokeAndWait()方法同义。并且,是的,如果你觉得Sun的方法的命名更为清晰,我们赞同。)这些方法按以下方式工作: 


asyncExec(Runnable)--当你需要更新用户界面但并不关心具体何时更新时使用。记住,使用此方法意味着后台线程和用户界面间的处理不存在任何可保证的关联。   
syncExec(Runnable)--当你的背景线程需要先进行用户界面更新才能继续处理时使用。注意,在用户界面更新进行之前,你的背景线程会被阻塞。   
  这些方法都采取了实现Runnable接口的类。以下代码显示了你一般会如何使用这些方法: 

  Display.getDefault().asyncExec(new   Runnable()   
  { 
    public   void   run()   
    {   
      button.setText(new   Date().toString());   
    }   
  }); 
  

  asyncExec()方法是显示类的一部分,所以你首先需要取得显示类的当前实例,这样做就避免了在你的整个程序中传递显示类的引用。你将一个实现了Runnable接口的类传递到asyncExec()方法。通常你创建一个匿名类来进行更新,正如前面的例子所示。 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    swt线程冲突与解决

    swt线程冲突与解决,swt的使用中,UI主线程往往容易与用户线程产生冲突,这个时候就需要使用同步和异步的思想来解决这个问题

    SWT并发例子(后台耗时线程)

    SWT并发例子(后台耗时线程)前台点击按钮,后台执行一个耗时操作。

    局域网聊天 SWT Java 多线程问题已经解决

    局域网聊天 SWT Java QQ 多线程的处理已经解决 非常好的学习资料

    SWT线程教程

    详细讲解SWT线程的开发技术。 传统的AWT开发技术的诸多弊端,促使了各种AWT替代技术的出现,而SWT便是这些技术中的优秀代表,文档详细讲解了基于SWT开发桌面程序中可能遇到的种种问题,其中SWT线程便是亮点之一,读...

    swt 多线程

    該文檔是 工作中遇到ui层先后展示问题,查询的swt rcp ui 多线程原理,分享给大家,希望能共同学习

    swt页面后台多线程接受ModBUS协议Socket通讯的数据

    swt页面后台多线程接受ModBUS协议Socket通讯的数据

    SWT/jface等GUI类库开发简易聊天室系统+java多线程

    用swt开发多用户聊天程序。SWT/jface等GUI类库开发简易聊天室系统+java多线程。

    SWT+SOCKET通信

    swt与socket的网络通信。一个服务端,一个客户端。并且UI组件和SOCKET是分开的。里面用到了关于SWT的线程处理。很不错! 运行: 先开启服务器。然后点客户端的连接即可。 需要说明的是里面有些图片。我没有上传。你...

    swt-async-handler-1.0

    SWT同样不允许主线程外的其他线程直接访问控件。 所以SWT为我们提供了async执行Runnable的方法。 但是该方法只是用于接收异步线程消息,如果你在该方法中做过多的事情同样会造成UI线程的阻塞。 因此,笔者模仿...

    基于SWT和Hibernate的应用例子

    前台为SWT界面,后台线程通过hibernate实现数据库操作

    SWT与SwingWorker的结合

    Swt一般情况不允许在另外一个线程中更新控件内容,此程序使用java swing的SwingWorker对swt的控件进行操作更新。对于喜欢使用SwingWorker更新Swing控件的人来说,也可以使用SwingWorker更新Swt控件

    SWT\JFace核心应用 PDF文档(14-19章)

    本文档含14-19章;由于上传大小的限制分开了上传。覆盖SWT技术的各个方面,从最基本的简单概念到SWT线程的高级知识,再到SWT的扩展JFace,然后到RCP的应用。本书内容涵盖SWT的各个方面,是对SWT内容体系的整体总结。

    用SWT做界面的定时关机软件

    这个是Java做的定时关机的软件, 用SWT来做界面。

    SWT/JFace核心应用PDF文档(1-7章)

    本文档含1-7章;由于上传大小的限制分开了上传。覆盖SWT技术的各个方面,从最基本的简单概念到SWT线程的高级知识,再到SWT的扩展JFace,然后到RCP的应用。本书内容涵盖SWT的各个方面,是对SWT内容体系的整体总结。

    多线程下载技术论文.rar

    3.1 JAVA中的多线程与线程安全 6 3.1.1 Java中的多线程 6 3.1.2 Java中的线程安全 7 3.2 HTTP协议简介 8 3.3 断点续传原理 8 4 需求分析 10 4.1用户需求分析 10 4.2 业务流分析 11 5. 整体设计 11 5.1 系统...

    RxSWT:SWT中的React式编程

    RxSWT基于并提供用于与SWT UI线程同步的自定义调度程序。 编码改编自 ,因为Android还具有一个主线程,该主线程需要与SWT之类的UI同步。 二进制文件 二进制文件可以在Bintray上找到: ://dl.bintray....

    swt-jdbc-orcal数据库实现酒店管理系统

    主要运用swt绘制界面,orcal数据库对数据进行管理,运用jdbc对数据进行操作,有些功能还运用到多线程技术。主要分为客户预定酒店端和酒店管理人员对客户预定的房间的一个处理和客户资料,房间管理等功能。

    java socket多线程聊天

    该软件是一个基于java语言的socket编程,可以实现单个服务器对应多个客户端的聊天。采用swt,功能还是比较完善的。

    java SWT编写JGroup局域网聊天程序

    以为不会出现什么问题但是在实现的时候发现两个同局域网的客户端不能互连,找不到对方在调试的时候发现只要是使用了SWT的类的地方会出现线程错误,于是我想是不是出现了线程同步的问题经询问别人后得知在SWT中使用...

Global site tag (gtag.js) - Google Analytics