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

<b>Java开辟中的线程安全挑选与Swing</b>[Java编程]

赞助商链接



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

Swing API的计划目标是强盛、机动和易用.分外地,我们但愿能让程序员们便利地成立新的Swing组件,不管是重新开始还是通过扩大我们所供应的一些组件.

出于这个目的,我们不要求Swing组件支持多线程拜候.相反,我们向组件发送恳求并在单一线程中履行恳求.

本文谈论线程和Swing组件.目的不但是为了帮忙你以线程安全的方法利用Swing API,并且注释了我们为什么会挑选目前这样的线程筹划.

本文包含以下内容:

◆单线程法则:Swing线程在同一时刻仅能被一个线程所拜候.普通来说,这个线程是事件派发线程(event-dispatching thread).
◆法则的例外:有些操作保证是线程安全的.

◆事件分发:假如你需求从事件处理(event-handling)或绘制代码以外的地方拜候UI,那么你可以利用SwingUtilities类的invokeLater()或invokeAndWait()办法.

◆成立线程:假如你需求成立一个线程——比方用来处理一些耗费大量计算本领或受I/O本领限制的工作——你可以利用一个线程工具类如SwingWorker或Timer.

为什么我们这样实现Swing:我们将用一些关于Swing的线程安全的后台资料来完毕这篇文章.

Swing的法则是:

一旦Swing组件被具现化(realized),全部大概影响或依靠于组件状况的代码都应当在事件派发线程中履行.

这个法则大概听起来有点吓人,但对很多简单的程序来说,你用不着为线程问题操心.在我们深化若何撰写Swing代码之前,让我们先来定义两个术语:具现化(realized)和事件派发线程(event-dispatching thread).

具现化的意思是组建的paint()办法已经或大概会被调用.一个作为顶级窗口的Swing组件当调用以下办法时将被具现化:setVisible(true)、show()或(大概令你诧异)pack().当一个窗口被具现化,它包含的全部组件都被具现化.另一个具现化一个组件的办法是将它放入到一个已经具现化的容器中.稍后你会看到一些对组件具现化的例子.

事件派发线程是履行绘制和事件处理的线程.比方,paint()和actionPerformed()办法会自动在事件派发线程中履行.另一个将代码放到事件派发线程中履行的办法是利用SwingUtilities类的invokeLater()办法.

全部大概影响一个已具现化的Swing组件的代码都必须在事件派发线程中履行.但这个法则有一些例外:

有些办法是线程安全的:在Swing API的文档中,线程安全的办法用以下文字标志:

This method is thread safe, although most Swing methods are not.
(这个办法是线程安全的,固然大大都Swing办法都不是.)

一个利用程序的GUI常常可以在主线程中构建和显示:下面的典型代码是安全的,只要没有(Swing或其他)组件被具现化:

public class MyApplication
{
 public static void main(String[] args)
 {
JFrame f = new JFrame("Labels"); // 在这里将各组件
// 加入到主框架……
f.pack();
f.show();
// 不要再做任何GUI工作……
  }
}


  以上是“<b>Java开辟中的线程安全挑选与Swing</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 .