`

GUI 多线程编程

阅读更多
    其实我对界面编程是不触的,只是用JAVA开发以来很少开发桌面程序,于是对界面编程慢慢生疏,除了在毕业设计的时候用SWT搞了个比较丑陋的SPEM(过程定义语言)到(XPDL)工作流语言的转换器之外,好像很少编写界面程序,连小APPLET都很少碰。
    日子久了,居然也心里慢慢有点发憷了, 想想看,也实在是挺搞笑的。
    前些天开发的JAVA APPLET界面很简单,但是,因为该APPLET通过WEB SERVICE和服务器端进行交互,会占用很长的时间。
    为了增强用户的交互性,我们不能让界面主线程长期执行,不能返回。因此,我们需要增加在主线程中另外启动一个线程A,使用这个线程A来完成基线的建立。该线程每完成一步操作之后,需要启动另外的线程B1, B2, B3...更新主线程的界面。
    更新的操作如下:

 private void updateGUI4(final boolean step4) {
        Runnable r = new Runnable() {
                public void run() {
                    if (!step4) {
                        getStep2StatusLabel().setText("第二步错误");
                    } else {
                        progressBar.setValue(40);
                        progressBar.setStringPainted(true);
                        getStep2StatusLabel().setText("完成第二步");
                    }
                }
            };

        [color=red]invokeAndWait(r);[/color]
    }


invokeAndWait()是调用并且event-dispather线程执行完了这段代码之后等待R执行完成才返回。
    private void invokeAndWait(Runnable r) {
        try {
            SwingUtilities.invokeAndWait(r);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
    }


如果采用SwingUtilities.invokeLater(r);的话,event-dispather可能还没Y有执行这段代码,就返回了,那么也就是说界面可能在线程A,执行到之后的很多步骤的时候,还没有更新界面,这样就不符合我的要求了:)

yeah,简单的多线程处理
分享到:
评论

相关推荐

    VC多线程编程

    ### VC多线程编程知识点详解 #### 一、引言:多线程编程的重要性 在软件开发中,尤其是在图形用户界面(GUI)应用领域,如何有效地处理耗时操作成为了一个重要议题。耗时操作(如文件读写、网络请求、复杂计算等)...

    QT多线程编程

    ### QT多线程编程知识点详解 #### 一、QT多线程编程背景及支持机制 **QT** 是一种广泛使用的跨平台图形用户界面(GUI)框架,它基于 **C++** 开发,允许开发者轻松构建复杂的图形用户界面系统。为了满足用户在不同...

    下载 多线程编程技术开发资料 高清完整PDF版

    多线程编程广泛应用于服务器端应用、图形用户界面(GUI)、数据库操作以及任何需要处理多任务或提高性能的软件开发中。 10. 并发编程高级话题 随着多核处理器的普及,多线程编程领域也衍生出了更多高级话题,包括但不...

    多线程编程技术开发

    在计算机科学领域,多线程编程技术是一种优化程序性能的重要手段。它允许一个应用程序同时执行多个独立的任务,从而提升整体的处理效率。本文主要探讨如何将单线程应用程序转化为多线程应用程序,以及多线程在提高...

    C++_GUI_Qt4编程(第二版)_C++GUIQt4编程_QT_

    12. **多线程编程**:讲解如何在Qt中使用QThread来实现多线程,提高程序性能并避免阻塞UI。 13. **测试与调试**:讨论单元测试(Qt Test框架)和调试技巧,确保代码质量和稳定性。 14. **打包与发布**:最后,介绍...

    Linux系统下的多线程编程入门.pdf

    在Linux系统中,多线程编程是开发高效并发应用程序的关键技术。线程是操作系统调度的基本单位,它允许在一个进程中执行多个并发线程,共享资源,从而提高程序的响应速度和系统资源利用率。与进程相比,线程具有启动...

    posix多线程编程

    在深入探讨POSIX多线程编程的细节之前,我们首先需要理解什么是线程以及为何要在Linux环境下使用pthread库进行多线程编程。 ### 一、何为线程?为何使用线程? 线程是操作系统能够进行运算调度的最小单位,它是...

    Windows下多线程编程技术.pdf

    多线程编程技术在Windows中的应用广泛,如在GUI应用程序中,主线程通常处理用户界面,而工作线程则负责计算密集型任务,避免UI冻结。此外,多线程也常用于网络编程,一个线程接收数据,另一个线程处理数据,提高响应...

    C++GUI Qt4编程源代码

    Qt4提供QThread类来支持多线程编程,允许开发者在后台执行耗时操作,而不阻塞用户界面。通过QObject的moveToThread()方法,可以将对象移动到不同的线程中运行,实现并发处理。 **6. 网络编程** Qt4的网络模块提供了...

    基于Java GUI 多线程 UDP网络编程的小型聊天软件

    基于Java GUI 多线程 UDP网络编程的小型聊天软件

    使用javaGUI多线程网络编程技术实现的聊天室程序

    在本项目中,"使用Java GUI多线程网络编程技术实现的聊天室程序"是一个基于Java平台的实时通信应用,其主要目标是模仿QQ的功能,为用户提供即时消息传递的能力。这个程序利用了Java的几个核心特性,包括图形用户界面...

    GUI中用线程实现倒计时

    ### GUI中用线程实现倒计时的知识点详解 #### 一、背景介绍 ...通过对Swing组件的应用、多线程的处理以及事件监听器的设计,不仅能够有效提升GUI程序的用户体验,还能加深开发者对于Java多线程机制的理解。

    linux编程技术-多线程-网络编程

    本资料集专注于"Linux编程技术-多线程-网络编程",它涵盖了UNIX环境高级编程、Linux网络编程、Linux多线程编程、Linux窗口编程以及Linux脚本编程等多个核心主题。这些内容都是构建高效、可靠且可扩展的Linux应用的...

    Windows平台下的多线程编程(计算机论文翻译).doc

    Windows平台下的多线程编程 多线程编程是计算机科学中一个重要的概念,它允许一个进程中运行多个线程,每个线程执行不同的任务,从而提高系统的效率和性能。在 Windows 平台下,多线程编程是通过 Win32 API 和 MFC ...

    window多文件多线程编程

    在Windows平台上进行多文件多线程编程是一项复杂但至关重要的任务,这涉及到多个技术领域,如图形用户界面(GUI)编程、线程管理和文件操作。本项目“window多文件多线程编程”显然旨在深入实践这些技能,通过实际...

    java多线程实验报告.pdf

    6. GUI多线程编程:在文件中提到了使用Swing库的JFrame和JTextArea组件,这些组件是图形用户界面(GUI)编程的一部分,但Java GUI编程中经常遇到的一个问题是更新界面时需要在事件分派线程(EDT)上执行。...

    mutiThreadDownload.zip_GUI多线程文件

    【标签】"gui多线程文件" 标签表明这个程序涉及到了两个关键点:一是图形用户界面,二是多线程处理文件。GUI通常使用Java Swing或JavaFX等库来构建,用于提供用户友好的交互界面。而多线程则涉及到Java的并发编程,...

    MFC多线程编程.pdf

    ### MFC多线程编程知识点解析 #### 一、引言 在软件开发过程中,特别是在图形用户界面(GUI)应用中,单线程程序容易出现响应延迟甚至“假死”的现象。例如,当一个线程执行耗时操作时,整个程序会变得不响应用户的...

    C++ GUI Qt4编程(第二版).pdf【第三部分】

    前5章主要涉及qt基础知识,后两个部分主要讲解qt的中高级编程,包括布局管理、事件处理、二维/三维图形、拖放、项视图类、容器类、输入/输出、数据库、多线程、网络、xml、国际化、嵌入式编程等内容。对于本书讲授的...

Global site tag (gtag.js) - Google Analytics