关于JAVA的多线程技术

来源 :考试周刊 | 被引量 : 0次 | 上传用户:yxl122702985
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要: 多线程技术是JAVA应用的主要技术,多线程具有并行机制、交互性能、实时控制等性能。主要的优势有提高界面程序响应速度和充分利用系统资源。通过使用线程,可以将需要大量时间完成的流程在后台完成;而通过在一个程序内部同时执行多个流程,可以充分利用CPU等系统资源,从而最大限度地发挥硬件的性能;在现在的项目开发中,多线程编程技术获得了广泛的使用。本文从线程概念、属性、实现方法、优劣势来介绍JAVA的多线程技术。
  关键词: JAVA 多线程技术 属性 实现方式 优劣势
  
  一、JAVA概述
  JAVA是一种面象对象的、分布式的、解释的、键壮的、安全的、结构中立的、可移植的、多线程的、动态的的语言。
  JAVA的设计思想是建立在当前大多数操作系统都实现了线程调度。JAVA虚拟机的很多任务都依赖线程调度,而且所有的类库都是为多线程设计的。多线程编程的含义是可将程序任务分成几个并行的子任务。
  二、多线程技术
  1.线程概述
  一般来说,正在计算机中执行的程序叫做“进程”(Process)。所谓“线程”(Thread),是“进程”中某个单一顺序的控制流。
  最简单的Applet也是由多个线程来完成的。在JAVA中,任何一个Applet的paint()和update()方法都是由AWT(Abstract Window Toolkit)绘图与事件处理线程调用的,而Applet主要的方法:init(),start(),stop()和destory()是由执行该Applet的应用调用的。
  Unix操作系统和Microsoft Windows操作系统支持多用户、多进程的并发执行,而JAVA语言支持应用程序进程内部的多个执行线程的并发执行。
  在一个多线程程序中,可以分配一个线程来读取数据,让另一个线程来处理数据,而让第三个线程把数据输送到图形卡上去。这三个线程可以并行运行。这样以来,在磁盘读取数据的同时仍然可以处理数据,从而提高了整体程序的性能。大量的示例程序都可以被设计来同时做两件事情以进一步提高性能。JAVA虚拟机(JVM)本身就是基于此原因广泛使用了多线程技术。例如:一个人在处理家务的过程中,将衣服放到洗衣机中自动洗涤后将大米放在电饭锅里,然后开始做菜,等菜做好了,饭就煮熟了,同时衣服也洗好了。
  2.线程属性
  为了正确有效地使用线程,我们必须理解线程的各个方面,并了解JAVA实时系统,必须知道如何提供线程体、线程的生命周期、实时系统如何调度线程、线程组、什么是幽灵线程。
  (1)线程体(Thread Body)
  所有的操作都发生在线程体中,在JAVA中线程体是从Thread类继承的run()方法,或实现Runnable接口的类中的run()方法。当线程产生并初始化后,实时系统调用它的run()方法。run()方法内的代码实现所产生线程的行为,它是线程的主要部分。
  (2)线程状态
  ①新线程状态(New Thread)
  产生一个Thread对象就生成一个新线程。当线程处于“新线程”状态时,仅仅是一个空线程对象,它还没有分配到系统资源。因此只能启动或终止它。任何其他操作都会引发异常。
  ②可运行状态(Runnable)
  start()方法产生运行线程所必须的资源,调度线程执行,并且调用线程的run()方法。在这时线程处于可运行态。该状态不称为运行态是因为这时的线程并不总是一直占用处理机。特别是对于只有一个处理机的PC而言,任何时刻只能有一个处于可运行态的线程占用处理机。JAVA通过调度来实现多线程对处理机的共享。
  ③非运行状态(Not Runnable)
  当以下事件发生时,线程进入非运行态。
  suspend()方法被调用;
  sleep()方法被调用;
  线程使用wait()来等待条件变量;
  线程处于I/O等待;
  死亡态(Dead):当run()方法返回,或别的线程调用stop()方法,线程进入死亡态。
  (3)线程的调度
  线程调度是JVM对运行的多个线程进行系统级的协调,以避免多个线程争用有限资源而导致应用系统死机或者崩溃。
  JAVA定义了线程的优先级策略。JAVA将线程的优先级分为10个等级,分别用1-10之间的数字表示。数字越大表明线程的级别越高。
  为了控制线程的运行策略,JAVA定义了线程调度器来监控系统中处于就绪状态的所有线程。线程调度器按照线程的优先级决定那个线程投入处理器运行。在多个线程处于就绪状态的条件下,具有高优先级的线程会在低优先级线程之前得到执行。线程调度器同样采用“抢占式”策略来调度线程执行,即当前线程执行过程中有较高优先级的线程进入就绪状态,则高优先级的线程立即被调度执行。具有相同优先级的所有线程采用轮转的方式来共同分配CPU时间片。
  (4)幽灵线程(Demon Thread)
  任何一个JAVA线程都能成为幽灵线程。它是作为运行于同一个进程内的对象和线程的服务提供者。幽灵线程是应用中典型的独立线程。它为同一应用中的其他对象和线程提供服务。幽灵线程的run()方法一般都是无限循环,等待服务请求。
  (5)线程组(Thread Group)
  每个JAVA线程都是某个线程组的成员。线程组提供一种机制,使得多个线程集于一个对象内,能对它们实行整体操作。当线程产生时,可以指定线程组或由实时系统将其放入某个缺省的线程组内。线程只能属于一个线程组,并且当线程产生后不能改变它所属的线程组。
  3.线程的实现
  JAVA语言实现多线程应用程序的方法,根据多线程应用程序继承或实现对象的不同可以采用两种方式:一种是应用程序的并发运行对象直接继承java的线程类Thread;另一种方式是定义并发执行对象实现Runnable接口;即:一种是扩展java.lang.Thread类,另一种是通过java.lang.Runnable接口。
  (1)继承Thread类来实现线程:
  import.JAVA.awt.*;
  public class wxy1
  {public static void main(Stringargs)
   {thread1 t1=new thread1(1); // 创建线程
   thread1 t2=new thread1(2);
   t1.start();t2.start();
   }
  }
  class thread1 extends Thread// thread1类继承了Thread类
  { int d;
  Mythread(int i)
  { d=i;}
  public void run()
  { int i=0;
   while(d i==1)
   { try {sleep(1000);}
  catch(InterruptedException e) {}
   }
   System.out.println("The d is " d);
  }
  (2)以下代码是实现Runnable接口的实现多线程
  import JAVA.applet.Applet;
  import JAVA.awt.*;
  public class wxy2 extends Applet implements Runnable// wxy2类继承了Applet实现Runnable
  { static int r=20;
   static int x=80;
   static int y=20;
   Thread th;
   public void init()
   {th = new Thread(this);
   th.start();
   }
   public void run()
   {int y1= 1;
   int i=1;
   int sleeptime=10;
   while(true)
   {y =(i*y);
  if(y-rgetSize().height)
  y1*=-1;
  try{t.sleep(sleeptime);}
  catch(InterruptedException e){ }
  }}}
  4.多线程的优劣势
  多线程带来的更大的好处是更好的交互性能和实时控制性能。多线程技术使程序的响应速度更快;当前没有进行处理的任务可以将处理器时间让给其他任务;占用大量处理时间的任务可以定期将处理器时间让给其他任务;可以随时停止任务;可以分别设置各个任务的优先级以优化性能。缺点有:等候使用共享资源时造成程序的运行速度变慢;对线程进行管理要求的额外CPU开销;漫长的等待、浪费精力的资源竞争,以及死锁等多线程症状。
  三、结语
  本文讲述了Java多线程技术的几个方面,包括JAVA概述、多线程技术(线程概述、线程属性、线程实现和多线程的优劣势)。多线程的核心在于多个代码块并发执行,本质特点在于各代码块之间的代码是乱序执行的;多线程技术是JAVA的重要主要技术,Java语言对应用程序多线程能力的支持增强了Java作为网络程序设计语言的优势。
  
  参考文献:
  [1]王卫生.Java程序设计与实训教程[M].北京:北京理工大学出版社,2007:2.
  [2]孟铂,樊新华.Java的多线程应用[J].电脑知识与技术(学术交流),2006,(23).
  [3]贾兰兰.剖析JAVA语言的多线程[J].信息系统工程,2009,(6).
其他文献
期刊
期刊
作为当代美国“自白派”诗人的杰出代表,西尔维娅·普拉斯的一生短暂而又极富传奇色彩.她的诗歌从自然、神话、民谣、传说、童话等各类艺术形式中汲取养分,富有激情与创造力,
近年来,作为一种重要的社会责任实现方式,企业慈善捐赠受到了很多学者的关注。他们从不同角度对企业慈善捐赠的动机、影响因素、具体策略等方面进行了理论探讨和实证研究。其
学位
一、问题的提出文风在党的历史上,曾经是一个问题。文风在今天,仍然是一个问题。我们党历来是十分重视文风建设的,一直为培养生动活泼、新鲜有力的马克思主义文风而努力。但是,综
2020年4月20日,习近平总书记陕西行,实地考察了商洛市柞水县金米村产业扶贫成果.看到央视新闻,让我想起柞水另一个金融扶贫案例——陕西盘龙药业集团股份有限公司(以下简称盘
期刊
可持续发展是一个巨系统,它既涉及经济、社会、环境及资源子系统,又涉及当代与后代人的时间因素,同时还体现了系统所做出的状态、响应、压力情况。本文在详细介绍和探讨可持
汉维复合词中,名名复合词是一种普遍存在的现象.本文从形态、结构和语义等方面对汉维名名复合词进行微观对比分析.对比结果显示,两种语言名名复合词在形态特征方面差异较大,
河南黄河滩区的特点是面积大、人口多.而由于黄河水流比较湍急,在涝季的时候处在黄河滩区的人们就会饱受洪水的折磨.另外,由于黄河滩区的交通不够发达,资源也比较稀少,因此也
钢丝绳打滑保护是多绳摩擦式提升机重要的保护之一,可靠的打滑保护系统有效地监视钢丝绳的线速度、执行钢丝绳打滑保护功能。根据各矿井多绳摩擦式提升机的实际情况和钢丝绳