欢迎来到天天文库
浏览记录
ID:22831007
大小:211.72 KB
页数:9页
时间:2018-10-31
《关于java语言实现并发编程的研究综述》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、关于java语言实现并发编程的研究综述【摘要】JAVA一个重要的特点就是支持多线程编程,多线程编程是实现外发编程的一种方式。本文简述了与并发编程相关的一些概念,并通过实例阐述/如何利用多线程进行并发编程,介绍了JAVA多线程的M]步机制以及死锁等问题。【关键词】JAVA;多线程;并发编程一、背景随着多核处理器的啓及,以及人们对高性能计算需求的不断扩大各种新技术的岀现,并发编程模型也处于不断的发展和完善之中。传统编程环境通常足单线程的,而java是支持多线程的。由于一个CPU在同一吋刻只能执行一个程序屮的一条指令,所以在单核处理器环境下,人们所看到的程序能够并行的执行,实际上是进
2、程被交替执行,表现出一种丼发的外部特种,是伪并行;而在多核处理器的环境下,才是真并行,进程不仅可以交替执行,ifij.rvu•以重叠执行。并行编程是在多核处理器的怙况下冰会fli现的,本文就着重讨论卜多核处理器卜的并发/多线程编程。并发等相关概念概述1、并发与并行并发是指两个或多个程序在M—时间间隔内发生,如果在单核处理器上,看似程序M时执行,实际上是交替执行;如果在多核处理器上,我们看到的也是同时执行,实际上又分为两种情况:一种足程序在不同的处理器上在同一吋刻同吋执行,我们把这种情况称为并行;另一种情况就是交替执行。所以只有在多核处理器的情况下冰有可能实现并行,并行具有并发的
3、含义,而并发不一定是并行。2、同步与异步同步是指发送一个请求等待返回,然后再发送下一个请求;异步是指发送一个请求不等待返冋,随吋n了以再发送下一个请求。界步和hd步是相对的,M步就是顺序执行,执行完一个再执行K一个,需要等待、协调运行。异步就是彼此独立,在等待某事件的过程中继续做&己的事,不需要等待这个事件完成后再工作。3、进程与多线程进程是指程序的一次执行过程,或是正在运行的一个程序,它具有一个独立的执行环境。线程冇时也被称为轻fi级的进程,线程足进程的进一步细化,足一个程序内部的一条执行路径,若一个程序可同一时间执行多个线程,就是支持多线程的。4、异步与多线程异步和多线程并
4、不是一个同等关系,异步是最终目的,多线程只是我们实现异步的一个方式。异步是让调用方法的主线程不需要hd步等待另一线程的完成,从而可以让主线程干其它的事情。三、java多线程编程的优缺点我们知道java语言具奋简单性、纯面叫对象、可移植性、健壮性、安全性、分布性等特点,同时java语言也提供了对多线程的良好支待,使得资源利用率更好,程序设汁在某些情况下也更简单,程序响应更快等,正是因为冇这些优点,多线程一直发展至今。事情总有两面性,从一个单线程的应用到一个多线程的应用并不仅仅带来好处,也会有一些代价。多线程程序设计更复杂,虽然有时候一些多线程的程序比单线程的程序要简单一些,似其他
5、方面都更为复杂,比如多线程访问共亨数据吋,如不进行同步处理,就会界易造成访问数裾错误,对于这样的错误又很难发现,并且问题难以重现及修复;还有等待临界资源时,也会使速度下降;线程在运行时不仅占用cpu,同时也需要一些
6、Aj存来维持它木地的堆栈,还耍占用操作系统中的一些资源,这增加Y资源的消耗;对线程的管理也会增加CPU的额外负拘;凼于缺乏成效,似乂很复杂将会降低效率;还有线程的饥饿、竞争和死锁等M题,这些都有待于继续研究。利用java多线程机制实现并发编程1、多线程编程形式创建线程需耍一定的步骤,首先要创建线程,然后为其指定工作,当工作结整后再毙掉该线程。通常在java中线程的编
7、程形式有两种:(1)继承Thread类1)定义子类继承Thread类;2)了类中重写Thread类中的run方法;3)创建Thread子类对象,即创建了线程对象;4)调川线程对象start方法:启动线程,调用mn方法。如卜'代码:实现两个线程打印10以內的自然数classPrintNumextendsThread{publicvoidrun(){for(inti=l;i<=10;i++){System.out.println("继承Thread类--->"+Thread.currentThread().getName()+":•'+i);}}}publicclasstest{p
8、ublicstaticvoidmain(String[]args){PrintNumpi=newPrintNum();PrintNump2=newPrintNum();pl.start();p2.start();}}图1图2是程序执行结果,因为线程是交替执行,所以执行的结果也会不M继承Thread类--->Thread-01继承Thread类--->Thread-01绺承Threap--->Thread-l1维承Thread类•-•>Thread-l1维承Thread类--->Thread-
此文档下载收益归作者所有