• 学前教育
  • 小学学习
  • 初中学习
  • 高中学习
  • 语文学习
  • 数学学习
  • 英语学习
  • 作文范文
  • 文科资料
  • 理科资料
  • 文档大全
  • 当前位置: 雅意学习网 > 语文学习 > 正文

    关于JAVA的多线程技术|JAVA多线程

    时间:2019-02-09 03:22:47 来源:雅意学习网 本文已影响 雅意学习网手机站

      摘 要: 多线程技术是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).

    推荐访问:多线程 技术 Java

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章