当前位置:首页 » 服务器技术
开发技术指南» 文章正文
    引言: 本文包括以下内容:单线程规则:Swing线程在同一时刻仅能被一个线程所访问。
 

 

 ·java程序中的多线程(1)    »显示摘要«
    摘要:为什么会排队等待? 下面的这个简单的 java 程序完成四项不相关的任务。这样的程序有单个控制线程,控制在这四个任务之间线性地移动。此外,因为所需的资源 ? 打印机、磁盘、数据库和显示屏 -- 由于硬件和软件的限制都有内在的潜伏时间,所以每项任务都包含明显的等待时间。因此,程序在访问数据库之前必须等待打印机完成打印文件的任务,等等。如果您正在等待程序的完成,则这是对计算资源和您的时间的一种拙劣使用......
 ·实用工具类库java.util(1)    »显示摘要«
    摘要:java的实用工具类库java.util包中,java提供了一些实用的方法和数据结构。例如,java提供日期(data)类、日历(calendar)类来产生和获取日期及时间,提供随机数(random)类产生各种类型的随机数,还提供了堆栈(stack)、向量(vector) 、位集合(bitset)以及哈希表(hashtable)等类来表示相应的数据结构。 图1给出了java.util包的基本层次......


线程与Swing

本文包括以下内容:

【程序编程相关:亚洲网通升级网络 泛亚海底光缆容量增50

【推荐阅读:Wi-Fi手机价格偏高 销售量将会受到影

单线程规则:swing线程在同一时刻仅能被一个线程所访问.一般来说,这个线程是事件派发线程(event-dispatching thread). 【扩展信息:伦敦将成首个实现城市级WiMAX服务的英

规则的例外:有些操作保证是线程安全的.

事件分发:如果你需要从事件处理(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或其他)组件被具现化:


...   下一页
    摘要:http客户端程序已集成在java语言中,可以通过urlconnection类调用。遗憾的是,由于sun没有公布http客户程序的源码,它实现的细节仍是一个谜。本文根据http协议规范,用java.net.socket类实现一个http协议客户端程序。1.socket类 了解tcp/ip协议集通信的读者知道,协议间的通信是通过socket完成的。在java.net包中,socket类就是对soc......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE