当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

<b>Swing中的并发-操纵SwingWorker线程情势</b>[Java编程]

赞助商链接



  本文“<b>Swing中的并发-操纵SwingWorker线程情势</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

本文介绍Java SE 6中的SwingWorker线程工作情势,翻译Concurrency in Swing(http://java.sun.com/docs/books/tutorial/uiswing/concurrency/index.html).

author: ZJ 2007-7-16

Blog: http://zhangjunhd.blog.51cto.com/

本文将谈论并发机制在Swing编程中的利用.

谨严地利用并发机制对Swing开辟人员来说非常重要.一个好的Swing程序利用并发机制来成立不会失去呼应的用户接口-不管是什么样的用户交互,程序总可以对其给出呼应.成立一个有呼应的程序,开辟人员必须学会如安在Swing框架中利用多线程.

一个Swing开辟人员将会与下面几类线程打交道:

[1]Initial threads(初始线程),此类线程将履行初始化利用代码.

[2]The event dispatch thread(事件派发线程),全部的事件处理代码在这里履行.大大都与Swing框架交互的代码也必须履行这个线程.

[3]Worker threads(工作线程),也称作background threads(后台线程),此类线程将履行全部损耗时间的任务.

开辟人员不需求在代码中显式的成立这些线程:它们是由runtime或Swing框架供应的.开辟人员的工作就是操纵这些线程来成立具有呼应的,长期的Swing程序.

好像全部其他在Java平台上运行的程序,一个Swing程序可以成立额外的线程和线程池,这需求利用本文行将介绍的办法.本文将介绍以上这三种线程.工作线程的谈论将触及到利用javax.swing.SwingWorker类.这个类有很多有效的特点,包含在工作线程任务与其他线程任务之间的通信与合作.

1.初始线程

每个程序城市在利用逻辑开始时生成一系列的线程.在尺度的程序中,只有一个这样的线程:这个线程将调用程序主类中的main办法.在applet中初始线程是applet对象的构造子,它将调用init办法;这些actions大概在一个单一的线程中履行,或在两个或三个差别的线程中,这些都根据Java平台的具体实现.在本文中,我们称这类线程为初始线程(initial threads).

在Swing程序中,初始线程没有很多事情要做.它们最基本的任务是成立一个Runnable对象,用于初始化GUI以及为那些用于履行事件派发线程中的事件的对象编排次序.一旦GUI被成立,程序将主要由GUI事件驱动,此中的每个事件驱动将惹起一个在事件派发线程中事件的履行.程序代码可以编排额外的任务给事件驱动线程(前提是它们会被很快的履行,这样才不会干扰事件的处理)或成立工作线程(用于履行损耗时间的任务).

一个初始线程编排GUI成立任务是通过调用javax.swing.SwingUtilities.invokeLater或javax.swing.SwingUtilities.invokeAndWait.这两个办法都带有一个唯一的参数:Runnable用于定义新的任务.它们唯一的辨别是:invokerLater仅仅编排任务并返回;invokeAndWait将等候任务履行完毕才返回.

看下面示例:

SwingUtilities.invokeLater(new Runnable()) {
   public void run() {
     createAndShowGUI();
   }
}

在applet中,成立GUI的任务必须被放入init办法中并且利用invokeAndWait;不然,初始历程将有大概在GUI成立完之前完成,这样将有大概呈现问题.在其他的情形下,编排GUI成立任务普通是初始线程中最后一个被履行的,所以利用invokeLater或invokeAndWait都可以.

为什么初始线程不直接成立GUI?因为几近全部的用于成立和交互Swing组件的代码必须在事件派发线程中履行.这个约束将在下文中谈论.


  以上是“<b>Swing中的并发-操纵SwingWorker线程情势</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .