用J2SE1.5建立多任务的Java应用程序

2016-02-19 16:00 6 1 收藏

想要天天向上,就要懂得享受学习。图老师为大家推荐用J2SE1.5建立多任务的Java应用程序,精彩的内容需要你们用心的阅读。还在等什么快点来看看吧!

【 tulaoshi.com - 编程语言 】

J2SE 5.0中的Java.util.concurrent程序包提供了一个新的线程框架组件,这个框架组件处理了与建立、执行和治理线程相关的很多低层细节信息。在本文中我们将细致地了解一下它的重要特性。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/) !-- frame contents -- !-- /frame contents --

假如你使用C、C++或Java先前的版本进行多线程编程,就知道在代码中治理线程是多么头疼的事情。在单线程程序中,代码中引起应用程序失败的bug每次都在同一个点出现。但是在多线程程序中,只有某些原因碰到一起的时候才会出现失败。由于预见可能引发应用程序失败的所有条件是非常困难的,所以多线程编程是有挑战性的。有些程序员从根本上避免这种挑战,而另外一些--聪明的解决问题的人员--则一直坐在他们的计算机面前直到问题解决。

J2SE 5.0平台包含了一个新的并发工具程序包。这个程序包中的类替并发类(concurrent classe)或并发设计中使用的应用程序建立阻塞(blocking)。该并发工具包含下面一些内容:

· 高性能的、灵活的线程池

· 异步执行事务的框架组件

· 为并发访问优化过的集合类宿主(host)

本文介绍了J2SE 5.0框架组件类和它们的重要特性。本文的下载代码提供了一些简单的、轻易使用的示例,它演示了所有的新线程框架组件类。你在阅读文章内容之后运行这些示例可以使自己对这些特性有更好的理解。

Executor(执行器)框架组件

Executor框架组件提供了一个简单的、标准的、可扩充的类,它提供了一些有用的功能,假如没有这些功能,我们要手工实现这些它们,会觉得十分单调和困难。该框架组件使调用、调度和执行的操作标准化了。它通过一组执行策略为控制异步事务提供了支持。

Executor接口执行已提交的可以运行的事务。它提供了一条途径,答应我们把事务提交从事务执行机制中分离出来。程序员通常使用Executor代替显式地(eXPlicitly)建立线程。Executor接口也提供事务的同步和异步执行。

对于同步执行,使用下面的命令:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)Class MySynExecutor implements Executor{
  public void execute(Runnable r) {
  r.run();
  }
  }

对于异步执行,使用下面的命令:

Class MyASynExecutor implements Executor{
  public void execute(Runnable r) {
  new Thread(r).start();
  }
  }

ExecutorService(执行器服务)类

ExecutorService类为治理一个或多个异步事务的终止和跟踪事务执行的过程提供了方法。代码下载中的MyExecutorService.java文件演示了治理事务终止的过程。它初始化了大小为三个的线程池,然后依次添加了线程。当线程的数量达到线程池的大小限制时,它调用关闭(shutdown)方法。在调用shutdown()方法之后,这个线程池不再接受新事务的执行。在等待十秒以后,该线程池调用shutDownNow()。这个方法会尽最大的努力来终止所有运行中的事务。在示例中,应用程序试图终止运行中的线程失败了。

ScheduledExecutorService(调度执行器服务)

ScheduledExecutorService类是我的最喜欢的类。它对于调度那些周期性执行的事务非常方便,而周期性执行的事务对于清除工作(例如清除你的应用程序建立的临时文件等等)尤其有用。下载代码中的MyScheduledExecutorService.java文件通过每五秒钟发出"嘟嘟"一声演示了调度的过程:

final Runnable beeper = new Runnable() {
  public void run() { System.out.println("beep"); }
  };
  final ScheduledFuture beeperHandle =scheduler.scheduleAtFixedRate(beeper, 1, 5, SECONDS);
Future和FutureTask

来源:http://www.tulaoshi.com/n/20160219/1610867.html

延伸阅读
标签: Java JAVA基础
本技巧将向您讲述如何编写可通过代理访问因特网上的Web服务器的Java应用程序。在Java应用程序中加入代理支持只需额外编写几行代码,且不依赖任何安全性“漏洞”。 几乎所有的公司都十分关注保护自己的内部网络,以防黑客及入窃者。一种常见的安全措施是完全断开与因特网的连接。如果黑客们不能连接到您的任何一台机器,他们...
J2me程序由于其非凡的运行环境限制,所以优化就显得比较重要,以下是我在学习j2me编程所收集的一些技巧和自己的心得。 本文主要是说明j2me平台上的非凡优化方法,与j2se重复的一些技巧就不再赘述了。 !-- frame contents -- !-- /frame contents -- 1.显示图象时确定好你的fps,最好先做几次小实验,...
out momory 一阵天旋地转内存又溢出了。在手机上这种痛苦经常都有,套一句俗话在手机上用内存必须勒紧裤腰带。虽然现在pc内存上G都不希奇,可是在手机上却只能以K来记,可能某位同志会马上跳出来说也有上M的,记住中国还不富大多数手机都是低端手机。 !-- frame contents -- !-- /frame contents -- 写手机程序让我仿佛回到了dos时代...
最近在开发的过程中用到了字符串的替换,本来觉得挺简单的问题,却总也解决不了。字符串明明是替换了,却总也输出不了正确结果,很是郁闷,到底是为什么呢? 先来看我的代码: Newsdetialsnt=(Newsdetials)ntIter.next(); System.out.println("新闻明细记录"+nt); Stringcontent=nt.getContent(); System.out.println("新闻的内容是:"+con...
一.代码优化 内存会溢出肯定和代码逃不了关系,99.99%学java的人都知道垃圾回收器是java的一大优点并据此来嘲笑C++。显然这个特性为代码编写者省了不少事,但这个特性却带来了不少隐患。举个例子在游戏当中经常有不同场景的切换,如从游戏逻辑退到主菜单逻辑,对游戏逻辑对象的态度很多人会选择忘记等待垃圾回收器来收尸。乍看之下似乎...

经验教程

984

收藏

44
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部