仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 832|回复: 10
打印 上一主题 下一主题

[学习教程] 来看Swing中的并发-利用SwingWorker线程形式

[复制链接]
老尸 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:13:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
但是对于JAVA技术类的学习,我觉得大课堂反而会影响自身独立思考的过程,因为上课的时候,老师讲课的速度很快为了不遗漏要点,通常会仔细的听,
本文先容JavaSE6中的SwingWorker线程事情形式,翻译ConcurrencyinSwing(http://java.sun.com/docs/books/tutorial/uiswing/concurrency/index.html)。
author:ZJ2007-7-16
Blog:http://zhangjunhd.blog.51cto.com/
本文将会商并发机制在Swing编程中的使用。
审慎地利用并发机制对Swing开辟职员来讲十分主要。一个好的Swing程序利用并发机制来创立不会得到呼应的用户接口-不论是甚么样的用户交互,程序总可以对其给出呼应。创立一个有呼应的程序,开辟职员必需学会怎样在Swing框架中利用多线程。
一个Swing开辟职员将会与上面几类线程打交道:
[1]Initialthreads(初始线程),此类线程将实行初始化使用代码。
[2]Theeventdispatchthread(事务派发线程),一切的事务处置代码在这里实行。年夜多半与Swing框架交互的代码也必需实行这个线程。
[3]Workerthreads(事情线程),也称作backgroundthreads(背景线程),此类线程将实行一切损耗工夫的义务。
开辟职员不必要在代码中显式的创立这些线程:它们是由runtime或Swing框架供应的。开辟职员的事情就是使用这些线程来创立具有呼应的,耐久的Swing程序。
好像一切其他在Java平台上运转的程序,一个Swing程序能够创立分外的线程和线程池,这必要利用本文行将先容的办法。本文将先容以上这三种线程。事情线程的会商将触及到利用javax.swing.SwingWorker类。这个类有很多有效的特征,包含在事情线程义务与其他线程义务之间的通讯与合作。
1.初始线程
每一个程序城市在使用逻辑入手下手时天生一系列的线程。在尺度的程序中,只要一个如许的线程:这个线程将挪用程序主类中的main办法。在applet中初始线程是applet对象的机关子,它将挪用init办法;这些actions大概在一个单一的线程中实行,或在两个或三个分歧的线程中,这些都根据Java平台的详细完成。在本文中,我们称这类线程为初始线程(initialthreads)。
在Swing程序中,初始线程没有良多事变要做。它们最基础的义务是创立一个Runnable对象,用于初始化GUI和为那些用于实行事务派发线程中的事务的对象编排按次。一旦GUI被创立,程序将次要由GUI事务驱动,个中的每一个事务驱动将引发一个在事务派发线程中事务的实行。程序代码能够编排分外的义务给事务驱动线程(条件是它们会被很快的实行,如许才不会搅扰事务的处置)或创立事情线程(用于实行损耗工夫的义务)。
一个初始线程编排GUI创立义务是经由过程挪用javax.swing.SwingUtilities.invokeLater或javax.swing.SwingUtilities.invokeAndWait。这两个办法都带有一个独一的参数:Runnable用于界说新的义务。它们独一的区分是:invokerLater仅仅编排义务并前往;invokeAndWait将守候义务实行终了才前往。
看上面示例:
SwingUtilities.invokeLater(newRunnable()){
  publicvoidrun(){
    createAndShowGUI();
  }
}
在applet中,创立GUI的义务必需被放进init办法中而且利用invokeAndWait;不然,初始历程将有大概在GUI创立完之前完成,如许将有大概呈现成绩。在其他的情形下,编排GUI创立义务一般是初始线程中最初一个被实行的,以是利用invokeLater或invokeAndWait都能够。
为何初始线程不间接创立GUI?由于几近一切的用于创立和交互Swing组件的代码必需在事务派发线程中实行。这个束缚将鄙人文中会商。
<p>
专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。
兰色精灵 该用户已被删除
沙发
发表于 2015-1-20 17:27:34 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
爱飞 该用户已被删除
板凳
发表于 2015-1-25 18:26:29 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
柔情似水 该用户已被删除
地板
发表于 2015-1-26 21:02:57 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
若天明 该用户已被删除
5#
发表于 2015-2-4 20:30:48 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
小女巫 该用户已被删除
6#
发表于 2015-2-10 06:35:44 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
透明 该用户已被删除
7#
发表于 2015-2-23 09:49:13 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
变相怪杰 该用户已被删除
8#
发表于 2015-2-25 19:15:22 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
灵魂腐蚀 该用户已被删除
9#
发表于 2015-3-5 19:52:13 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
莫相离 该用户已被删除
10#
发表于 2015-3-12 13:14:28 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
小妖女 该用户已被删除
11#
发表于 2015-3-19 22:14:28 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 00:30

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表