`
askme
  • 浏览: 57213 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SWT -- 多线程问题

    博客分类:
  • SWT
阅读更多
一.概述
如果你是SWT/Jface的初学者,那么本片所描述的问题很可能是你已经碰到或者将要碰到的。
这是关于多线程开辟的问题,比较常见。

二.问题:
当你在GUI主线程开辟一个新线程,进行其它操作,并且需要更新UI控件,意外发
生了:
Exception in thread "Thread-1" java.lang.NullPointerException。

三。解决方案
使用:Display#asyncExec(Runnable)或者Display#syncExec(Runnable)。
把你的UI更新操作另开一个线程,比如:
Display.getCurrent().asyncExec(new Runnable() {
    public void run() {
        button.setText("update");
    }
};


如果其它数据处理操作耗时不长,可以把这部分代码放入到与UI更新同一个线程,
Display.getCurrent().asyncExec(new Runnable() {
    public void run() {
        //Do business action
        button.setText("update");
    }
};

如果其它数据处理耗时长,那么为了不让UI响应迟钝,应该把逻辑操作和UI更新分开:
Thread t = new Thread(new Runnable() {
    public void run() {
        //Do business action
        Display.getCurrent().asyncExec(new Runnable() {
            public void run() {
                button.setText("update");
            }
        };
       
    }

}


4
2
分享到:
评论
2 楼 xingzhiyu2008 2011-11-03  
1 楼 loocao 2009-12-26  
哇~~太感谢了...
mark ...嘿嘿...

相关推荐

    swt-4.2.2-win32-win32-x86

    SWT(Standard Widget Toolkit)是Java编程环境...此外,SWT还支持多线程,使得在GUI中实现复杂的异步操作成为可能。总之,SWT为Java开发者提供了强大且高效的GUI开发工具,使其能够在各种平台上构建高性能的应用程序。

    SWT-Win32-Extension

    4. **多线程支持**:在Windows平台上,SWT-Win32-Extension 支持在多个线程中操作UI组件,提高了程序的响应速度和性能,尤其是在处理大量数据或执行长时间操作时。 5. **打印和打印预览**:扩展提供了便捷的打印和...

    swt64位和32位jar包4.3版本可用

    它是Eclipse项目的一部分,提供了与操作系统更紧密集成的功能,比如原生对话框、控件和多线程支持。标题提到的是SWT的4.3版本,提供了适用于64位和32位操作系统的jar包。 在Java中,JVM(Java虚拟机)根据安装的...

    swt-3.2.2-win32

    6. **Threads**:由于Java的多线程特性,SWT也支持在后台线程中更新界面,但需注意线程安全问题。 7. **Data Binding**:数据绑定允许将控件的值与应用程序的数据模型关联起来,简化了用户界面和业务逻辑之间的交互...

    swt-async-handler-1.0

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

    java-SWT-socket.zip_SWT_SWT socket

    4. **线程管理**:因为UI更新和Socket通信通常需要在不同的线程中进行,理解Java多线程概念,如`Thread`或`Runnable`接口,确保UI的响应性和通信的并发性。 5. **事件驱动编程**:在SWT中,事件处理是关键。当用户...

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

    本主题将深入探讨如何利用SWT(Standard Widget Toolkit)和Java来构建一个局域网内的聊天应用,并解决其中涉及的多线程问题。SWT是Eclipse基金会提供的一个开源GUI库,它为Java开发者提供了与操作系统更紧密集成的...

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

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

    SWT-JFace-in-Action_中文版

    JFace的核心优势在于其事件处理机制,它允许开发者以更加简洁的方式管理用户交互,通过将多个事件绑定到同一个处理器,从而减少代码量,提高开发效率。此外,JFace还提供了一系列预定义的对话框、视图和编辑器,极大...

    swt 多线程

    本文将深入探讨SWT中多线程的使用,特别是与UI交互相关的多线程原理。 首先,我们需要理解UI线程,也称为事件调度线程或AWT/SWT线程,它负责处理所有的用户界面更新和事件处理。在SWT中,所有的GUI操作必须在UI线程...

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

    标题"swt页面后台多线程接受ModBUS协议Socket通讯的数据"表明,我们正在讨论一个基于SWT的Java图形用户界面(GUI),该界面的后台使用多线程技术来处理通过Socket接收的遵循ModBUS协议的数据。这样的设计允许用户...

    java-swt

    SWT有多个版本,并且为不同的操作系统和硬件架构提供了相应的实现。 使用SWT,开发者可以创建诸如按钮、文本框、列表、树视图等常见的GUI组件。SWT组件通常比Swing的JFC组件更接近操作系统原生的外观和行为。此外,...

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

    SWT(Standard Widget ...这涉及到对Java多线程的理解,以及如何在SWT环境中正确地在事件调度线程和后台线程之间切换,以处理UI更新和耗时任务。通过这种方式,我们可以构建出高效且用户体验良好的桌面应用程序。

    基于SWT技术的Java多线程文件断点续传下载设计源码

    该源码项目基于SWT技术,实现了一个跨平台的Java多线程文件断点续传下载系统。项目总文件量为117个,其中包括49个类文件、24个Java源文件、22个JAR文件、8个JPG图片文件、4个PNG图片文件、2个Markdown文件和2个...

    swt线程冲突与解决

    由于SWT组件的设计原则是基于单线程模型,即所有的UI操作必须在UI主线程中执行,因此在多线程环境下容易引发线程冲突。本文将详细探讨SWT中的线程冲突问题及其解决方案。 #### SWT线程冲突的原理 SWT库设计之初就...

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

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

    SWT-PhoneCharger

    7. **多线程**:为了保证用户界面的响应速度,后台任务如数据读写、充电状态监控可能需要在单独的线程中执行。 8. **异常处理**:良好的错误处理机制对于任何软件都是至关重要的,确保在遇到问题时能给用户友好的...

    Java swt完整教程

    - SWT对多线程的支持更好,适合复杂的多线程GUI应用。 - Swing则提供跨平台的一致性,并且拥有丰富的内置组件和事件模型。 3. SWT组件 SWT包括各种常见的GUI组件,如按钮(Button)、文本框(Text)、列表(List...

    java socket多线程聊天

    总的来说,这个Java Socket多线程聊天软件利用了Java的网络编程能力、多线程特性和SWT GUI库,实现了服务器与多个客户端之间的实时、双向通信,为用户提供了一个实用的在线聊天平台。通过这样的实践,开发者可以深入...

Global site tag (gtag.js) - Google Analytics