Java多线程技术探讨-童艳华.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java多线程技术探讨-童艳华

华中师范大学网络教育学院本科毕业论文 ―――Java多线程技术探讨 童艳华 2005-8-17 华中师范大学网络教育学院本科毕业论文 ―――Java多线程技术探讨 童艳华 【摘要】: 在Java出现之前,实现多任务并发运行的多线程程序是一件烦琐且伴随许多不安全因素的事情。利用Java,编写安全高效的多线程程序变得简单,而且利用多线程和Java的网络包我们可以方便的实现多线程服务器程序。Java对网络及多线程具有内在的支持,具有网络时代编程语言的一切特点。本文正是在网络编程的背景下,对Java的多线程的概念、建立、管理、性质以及它在“数据库连接池”中的应用进行探讨。 【关键词】:多线程、客户程序员、动态管理、活锁、空闲连接池 问题的提出 从Java当前的应用看,它主要用于在Internet或局域网上的网络编程。在实现网络服务器程序时,为提高程序运行效率,降低用户等待时间,特别是在C/S模式下的单Server相应多Client请求中、以及数据库连接池的动态管理中,Java的多线程特性表现的淋漓尽致。那么多线程是怎么来处理有限资源的使用问题呢?以及他们是怎么进行管理的呢?它的并发多任务是怎么实现的?它有什么样的应用呢?请带着这些问题我们来看下文。 2、程序与线程的概念、管理以及相关性质 2.1线程的概念 根据OOP编程原理,对象表达的是应用程序的概念,而不是应用程序本身。利用对象这种逻辑概念,可将一个程序分割成相互独立的区域。 对象化后的程序在应用逻辑上“独立”的。 相对的,也可将一个程序转换成具有相对独立功能的子任务。它们之间的是相对“独立”的运行着。资源的占有也具有独立性。 由于程序的一些部分同特定的事件或资源联系在一起,同时又不想为它暂停程序的其他部分的执行。这就需要有一个独立于该主程序而且与资源关联在一起的一个“子程序”来实现这种相应。从而“线程”的概念就慢慢的行程了。 对早期的计算机(如DOS)而言,线程既是进程,进程既是进程,因为它是单线程的。当然一个程序可以是多线程的,多线程的各个线程看上去像是并行地独自完成各自的工作,就像一台一台计算机上运行着多个处理机一样。在多处理机计算机上实现多线程时,它们确实可以并行工作,而且采用适当的分时策略可以大大提高程序运行的效率。线程是共享地址空间的,也就是说多线程可以同时读取相同的地址空间,并且利用这个空间进行交换数据。 2.2 多线程的建立和管理 线程带来的好处是交互性能和实时控制性能。当然实时控制性能还取决于系统本身,在开发难易程度和性能上都比单线程要好。在单线程环境中,每个程序编写和执行的方式是任何时候程序只考虑一个处理顺序。如果一个任务无法做下去了 事实上编码和数据部分是相当独立的,需要时即可向线程提供。因此经常是几个线程使用同一编码和不同的数据。这个思想也可以用办公室工作人员来比喻。会计可能要做一个部门的帐或几个或几个部门的帐。任何情况的做帐的任务是相同的程序代码,但每个部门的数据是不同的。多线程编程环境用方便的模型隐藏CPU在任务切换间的事实。模型允许假装成有多个可用的CPU。为了建立另一个任务,编程人员要求另一个虚拟CPU,指示它开始用某个数据组执行某个程序段。下面我们来建立线程。在JAVA中建立线程并不困难,所需要的三件事:执行的代码代码所操作的数据执行代码的虚拟CPU 虚拟CPU包装在Thread类的实例中。建立Thread对象时,必须提供执行的代码和代码所处理的数据。JAVA的面向对象模型要求程序代码只能写成类的成员方法。数据只能作为方法中的自动(或本地)变量或类的成员存在。这些规则要求为线程提供的代码和数据应以类的实例的形式出现。 Public class SimpleRunnable implemants Runable{ Private String message; Public static void main(String args[]){ SimpleRunnable r1=new SimpleRunnable(“Hello”); Thread t1=new Thread(r1); t1.start(); } public SimpleRunnable(String message){ this.message=message; } public void run(){ for(;;){ System.out.println(message); } } } 线程开始执行时,它在public void run()方法中执行。这种方法是定义的线程执行的起点,就象应用程序从main()开始、

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档