JAVA多线程编程技术的研究.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JAVA 多线程编程技术的研究 【摘要】 Java开发技术在现阶段正在被广泛应用,相比较c++的另一个分支c#而言Java 的实现环境更为简单,比较而言也是轻量级变成语言的体现。能够通过Java 实现所有的软件,包括手机客户端软件、PC 机软件以及网站建设。Java 语言 已经逐步成为最流行的编程语言。Java拥有多线程的特点,本文将对此进行详 细的介绍。 【关键词】Java;多线程;语言;环境 一、前言 Java语言已经是一种相对成熟的开发语言,很多程序员选择使用Java 语言进 行轻量级软件的开发研究。在Java 多线程编程技术的开发领域存在着很多技 术上的难点,针对这些难点,本文将给予分析阐述,通过详细的归纳研究,确 定Java 多线程编程技术的核心思想和核心理念。 二、多线程介绍 多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流 都称为一个线程,彼此间互相独立。线程又称为轻量级进程,它和进程一样拥 有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间, 而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进 程简单。 具体到java 内存模型,由于Java 被设计为跨平台的语言,在内存管理上,显 然也要有一个统一的模型。系统存在一个主内存 (Main Memory), Java 中所 有变量都储存在主存中,对于所有线程都是共享的。每条线程都有自己的工作 内存 (WorkingMemory),工作内存中保存的是主存中某些变量的拷贝,线程 对所有变量的操作都是在工作内存中进行,线程之间无法相互直接访问,变量 传递均需要通过主存完成。 多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的 “同时”。如果系统只有一个CPU,那么真正的 “同时”是不可能的。多线程 和传统的单线程在程序设计上最大的区别在于,由于各个线程的控制流彼此独 立,使得各个线程之间的代码是乱序执行的,将会带来线程调度,同步等问题。 三、Java 中实现多线程的方法 我们不妨设想,为了创建一个新的线程,我们需要做些什么?很显然,我们 必须指明这个线程所要执行的代码,而这就是在Java 中实现多线程我们所需 要做的一切! 作为一个完全面向对象的语言,Java 提供了类 java.lang.Thread 来方便多线 程编程,这个类提供了大量的方法来方便我们控制自己的各个线程。 那么如何提供给 Java 我们要线程执行的代码呢?让我们来看一看 Thread 类。Thread 类最重要的方法是 run () ,它为Thread 类的方法 start () 所 调用,提供我们的线程所要执行的代码。为了指定我们自己的代码,只需要覆 盖它! 方法一:继承 Thread 类,重写方法 run (),我们在创建的 Thread 类的子 类中重写 run () ,加入线程所要执行的代码即可。 这种方法简单明了,符合大家的习惯,但是,它也有一个很大的缺点,那就 是如果我们的类已经从一个类继承,则无法再继承 Thread 类。 方法二:实现 Runnable 接口 Runnable 接口只有一个方法 run (),我们声明自己的类实现 Runnable 接口 并提供这一方法,将我们的线程代码写入其中,就完成了这一部分的任务。但 是 Runnable 接口并没有任何对线程的支持,我们还必须创建 Thread 类的实 例,这一点通过 Thread 类的构造函数publicThread (Runnabletarget);来实 现。 使用 Runnable 接口来实现多线程使得我们能够在一个类中包容所有的代 码,有利于封装下面让我们一起来研究一下多线程使用中的一些问题。 四、线程的交互 不同的线程可以执行不同的任务,如果这些任务之间是有某种联系的,那么 必须编写使它们交互的程序。Java 的Object 类为此提供了三个方法:wait ()、 notify ()和notifyAll ()。线程调用一个对象的wait ()方法,线程将释放以 这个对象为标记的锁,进入以这个对象为标记的等待池中;一个线程调用一个 对象的notify ()方法,将从以这个对象为标记的等待池中随机挑出一个线程, 放入锁池中;一个线程调用notifyAll ()方法,可以使正在等待该对象的线程 都从等待池进入锁池中。通常对wait ()、notify ()和notifyAll ()方法的调 用应该放在同步代码块中。Java 的线程从产生到灭亡,有以下几个状

文档评论(0)

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

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

1亿VIP精品文档

相关文档