小妖女 发表于 2015-1-18 11:04:37

了解下JAVA的Java Swing多线程逝世锁成绩剖析

windows系统样,他们做了什么事或者留了一些后门程序,谁都不知道,二,java开发是跨平台,任何系统上都可以运行,对于保密型系统和大型系统开发这是必要的
在基于JavaSwing举行图形界面开辟的时分,常常碰到的就是Swing多线程成绩。我们能够想一想一下,假如必要在一个图形界面上显现良多数据,这些数据是经由长工夫、庞大的查询和运算失掉的。假如在图形界面的统一个线程中举行查询和运算事情则会招致一段工夫界面处于逝世机形态,这会给用户带来不良的互动感觉。为懂得决这个成绩,一样平常会独自启动一个线程举行运算和查询事情,并随时更新图形界面。这时分,另外一个成绩就呈现了,大概不但没有办理本来偶然逝世机成绩,还大概招致程序完全逝世失落。侥幸的是在JDK中潜伏了一其中断程序的快速键,就是CTRL+BREAK,这个快速键Sun并没有在文档中发布。假如在命令行形式下启动Java程序,然后按CTRL+BREAK键,会失掉仓库的跟踪信息。从这些跟踪信息中就能够晓得详细激发逝世机的地位了。
当一个程序发生逝世锁的时分,你必定会但愿尽快找到缘故原由而且办理它。这时候候,你一样平常的精神会用在查找激发逝世锁的地位,另外一半的精神会用于对仓库举行跟踪一断定激发逝世锁的缘故原由。可是在JavaSwing程序中,你的一切勉力大概都是没有代价的。这是由于Java对Swing的多线程编程有一个特别请求。就是在Swing里,只能在与Swing不异的线程里对GUI元件举行修正。
也就是说,假如你要实行相似于jLabel1.setText("blabla")代码,必需在Swing线程中,而不同意在其他线程傍边。假如必需在其他线程中修正元件,可使用相似一下体例办理:
SwingUtilities.invokeLater(new Runnable() {
      public void run() {
          jLabel1.setText("blabla");
     }
  }
invokeLater办法固然外表偶然间提早实行寄义,可是实践上几近没有任何影响,大概在几毫秒以内就会被实行。别的另有一个invokeAndWait办法,除非特别必要,不然几近是不必的。
在不利用invokeLater的情形下,招致革新成绩是能够了解的,可是招致逝世锁就长处使人匪夷所思了。侥幸的是,不是任什么时候候都必要挪用改办法,这是由于年夜多半情形下,我们都是在与Swing统一个线程里举行界面更新。比方监听按钮点击事务的ActionListener.actionPerformed办法就是运转在与Swing不异的线程中的。可是假如在回调类中援用了另外一个类,而且是不属于AWT/Swing的,那末了局就很难断定了。以是说利用invokeLater应当是最平安的。
必要注重的是,在invokeLater做的任何事变,城市招致Swing线程窗口绘制事情停息上去,期待invokeLater事情停止。以是不要在invokeLater举行耗时操纵,只管只实行那些界面绘制相干的事情。能够经由过程代码重构,将那些与界面更新相干的代码会合起来一致处置。
一个倡议是那些在Swing中利用的类举行公道的计划。代码实行前判别是不是处于Swing线程傍边(利用SwingUtilities.isEventDispatchThread()办法),假如不是,则必要经由过程SwingUtilities.invokeLater(Runnable)实行,不然则间接实行代码。可是这提及来复杂,可是实践操纵会碰到良多坚苦。

在1995年5月23日以“Java”的名称正式发布了。

分手快乐 发表于 2015-1-19 16:00:14

Java 编程语言的风格十分接近C、C++语言。

飘灵儿 发表于 2015-1-24 13:26:55

Java 编程语言的风格十分接近C、C++语言。

山那边是海 发表于 2015-1-24 15:15:51

有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)

只想知道 发表于 2015-1-25 21:57:17

是一种使网页(Web Page)产生生动活泼画面的语言

飘飘悠悠 发表于 2015-2-2 05:10:27

是一种将安全性(Security)列为第一优先考虑的语言

小女巫 发表于 2015-2-7 16:18:04

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!

再见西城 发表于 2015-2-22 15:49:26

多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

不帅 发表于 2015-3-7 00:42:00

Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。

小魔女 发表于 2015-3-13 23:08:41

是一种为 Internet发展的计算机语言

莫相离 发表于 2015-3-20 21:23:02

是一种突破用户端机器环境和CPU
页: [1]
查看完整版本: 了解下JAVA的Java Swing多线程逝世锁成绩剖析