Java多线程编程技术研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java多线程编程技术研究

Java多线程编程技术研究   【摘要】Java开发技术在现阶段正在被广泛应用,相比较c++的另一个分支c#而言Java的实现环境更为简单,比较而言也是轻量级变成语言的体现。能够通过Java实现所有的软件,包括手机客户端软件、PC机软件以及网站建设。Java语言已经逐步成为最流行的编程语言。Java拥有多线程的特点,本文将对此进行详细的介绍。   【关键词】Java;多线程;语言;环境   中图分类号: TP313 文献标识码: A 文章编号:   一、前言   Java语言已经是一种相对成熟的开发语言,很多程序员选择使用Java语言进行轻量级软件的开发研究。在Java多线程编程技术的开发领域存在着很多技术上的难点,针对这些难点,本文将给予分析阐述,通过详细的归纳研究,确定Java多线程编程技术的核心思想和核心理念。   二、多线程介绍   多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。   具体到java内存模型,由于Java被设计为跨平台的语言,在内存管理上,显然也要有一个统一的模型。系统存在一个主内存(Main Memory), Java中所有变量都储存在主存中,对于所有线程都是共享的。每条线程都有自己的工作内存(Working Memory),工作内存中保存的是主存中某些变量的拷贝,线程对所有变量的操作都是在工作内存中进行,线程之间无法相互直接访问,变量传递均需要通过主存完成。   多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”。如果系统只有一个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 类的构造函数public Thread(Runnable target);来实现。   使用 Runnable 接口来实现多线程使得我们能够在一个类中包容所有的代码,有利于封装下面让我们一起来研究一下多线程使用中的一些问题。   四、线程的交互   不同的线程可以执行不同的任务,如果这些任务之间是有某种联系的,那么必须编写使它们交互的程序。Java的Object类为此提供了三个方法:wait()、notify()和notifyAll()。线程调用一个对象的wait()方法,线程将释放以这个对象为标记的锁,进入以这个对象为标记的等待池中;一个线程调用一个对象的notify()方法,将从以这个对象为标记的等待池中随机挑出一个线程,放入锁池中;一个线程调用notifyAll()方法,可以使正在等待该对象的线程都从等待池进入锁池中。通常对wait()、notify()和notifyAll()方法的调用应该放在同步代码块中。Java的线程从产生到灭亡,有以下几个状态。   1、新建状态(New):创建了线程类子类的实例并初始化后,该对象就处于新建状态,此时有了相应的存储空间和相应进程的资源。   2、就绪状态或可运行状态

文档评论(0)

130****9768 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档