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

    Java多线程技术 多线程模式是什么

    时间:2020-07-14 07:20:14 来源:雅意学习网 本文已影响 雅意学习网手机站

      摘要:本文首先介绍了线程的有关概念, 接着介绍了线程的生命期及其状态间的转换, 多线程的调度原则, 线程的死锁, 详细阐述了多线程的两种实现方法:由Thread类派生子类;实现Runnable接口。
      关键词:Java语言; 进程; 多线程;线程调度;死锁
      中图分类号:TP312JA 文献标识码:A
      
      1 引言
      
      多线程编程是Java语言的一个重要特色,Java对创建多线程程序提供了广泛的支持,Java的多线程是一个类或程序执行和管理多个线程的能力,每个执行线程可独立执行其他线程或与其他线程同步执行。Java的多线程机制能够很方便地创建和运行多个独立的线程的程序,并且可以创建多个同步线程,实现多个任务的同步执行,这一机制对于实现资源共享、防止“死锁”现象的出现极为有用。多线程的程序能更好地表达和解决具体问题,是计算机应用开发和程序实现的发展趋势。
      
      2 Java语言的线程
      
      2.1线程相关的概念
      程序是解决某一问题的代码系列,是一段静态的代码。进程是一个动态的概念,它是程序的一次动态执行过程,对应代码从加载、运行开始到运行完毕的一个完整的过程,这个过程是进程从产生、发展到消亡的过程。线程又称为“轻量进程”,是进程中一个顺序的执行流,一个进程在其执行的过程中,可以形成多个执行线索,每个执行线索就是一个线程。线程也是一个动态的概念,它对应一个程序段的一次动态的执行过程。一个进程中可以包含一个或多个线程,线程是比进程更小的单元。
      多线程指的是在一个程序中可以同时运行多个不同的线程,即一个程序中包含有多个执行流,借以执行不同的任务。
      虽然线程与进程都是顺序执行的指令序列,但它们之间是有区别的。一方面,进程是一个实体,每个进程都有自己独立的状态,并有自己的专用数据段;创建进程时,必须建立和复制其专用数据段。而线程则相互共享数据段,同一程序中的所有线程只有一个数据段,以避免进行无谓的数据复制,因此线程的建立和线程间的切换速度大大优于进程。另一方面,线程又具备进程的大多数优点。但是,由于多个线程共享一个数据段,所以,也出现了数据访问过程的互斥和同步问题,使得系统管理功能变得相对复杂。
      将进程划分成多个线程,目的是为了实现并行程序设计,在同一地址空间中执行多个控制流,减少并行执行时进程间切换的系统开销,因此可以大大提高应用程序的执行效率。
      
      2.2线程的生命期与状态转换
      线程同进程一样,是一个动态的概念,所以线程同进程一样,也有一个从产生到消亡的生命周期,在其生命周期中,程序可以对线程进行各种控制操作。一个新建的线程的生命期中有如下5种状态。
      (1)新建态(Newborn)
      当线程用new运算符创建但还未执行的这段时间里,它处于新建状态中,此时,线程对象已被分配了相应的内存空间并被初始化。
      创建线程的语句可以表示如下:Threaadt1=newThread( );
      (2)就绪状态或可运行状态(Runnable)
      当新建的线程调用start( )启动方法后,就会由新建态进入可运行态。可运行态的线程进入线程队列排队等待CPU资源,随时可以被调度执行。至于可运行态的线程何时才被真正执行,则取决于线程的优先级和排队队列的当前状况。
      使线程对象t1由新建态进入可运行态的语句可以表示如下:
       t1.start( );
      (3)运行态(Running)
      当可运行的线程被CPU调度后,就进入运行态,运行态表明线程正在运行,即线程对象正在调用本对象的run( )方法。
      (4)挂起态(Blocked)
      一个正在运行的线程遇到某些特殊情况时,将会进入挂起态。如果一个线程处于挂起状态,这个线程暂时无法进入排队队列。
      (5)消亡态(Dead)
      表示线程已退出运行状态,不再具有继续运行的能力。线程消亡的原因有两种: 一是线程正常运行终止, 即调用完run( )方法自然消亡: 二是非正常消亡, 例如执行了stop( )方法或destory()方法。
      
      2.3线程的优先级与调度
      Java 提供一个线程调度器来监控启动后进入就绪状态的所有线程。线程调度器根据线程的优先级决定调度线程的先后顺序,优先级高的线程先调度,优先级低的线程后调度。同时,线程的调度又是抢先式的,如果在当前线程的执行过程中,一个具有更高优先级的线程进入就绪状态,则这个高优先级的线程将立即被调度执行。
      线程的优先级的范围是1~10,Thread类用3个常量来表示线程的优先级,分别为:Thread.MIN_PRIORITY, 优先级为1,Thread.MAX_PRIORITY, 优先级为10,Thread.NORM_PRIORITY, 即为缺省优先级5,通过setPriority( )方法可以改变线程的优先级。
      
      3 Java多线程的实现
      
      在Java中,多线程的实现方式有两种:可以由线程Thread类派生子类,由子类生成的对象来实现多线程;也可以直接定义一个线程类来实现Runnable接口,由该线程类生成对象来实现多线程。下面分别介绍两种方法实现多线程的过程。
      
      3.1由Thread类派生子类
      Thread是一个具体的类,它封装了线程的所有行为。Thread类负责向其他类提供线程的最主要的功能,为了向一个类增加线程功能,可以由Thread类派生一个子类并同时覆盖run( )方法。run( )方法是是线程执行的起点,可以通过定义run( )方法来为线程提供代码。
      下面的程序由Thread类来构造多线程。
      classThreadExample
       {public static void main(String args[])
      {subThreadt1=newsubThread(“thread1”);//创建线程对象
       subThreadt2=newsubThread(“thread2”);
       t1.start( ); //启动线程
       t2.start( );
       try{ Thread.currentThread( ).sleep(500); //当前线程睡眠500毫秒
       }
      catch(InterruptedExceptione)
      {System.out.println(Thread.currentThread( ) +“线程睡眠500毫秒”); }
      }
      }
      classsubThreadextends Thread
      {public voidrun( )
      {for(int j=0;j   实现Runnable接口是在程序中使用线程的另一种方法。在某些情况下,一个类已经扩展了Frame或Applet, 因而这样的类不能再继承Thread类。Runnable接口为一个类提供了一种无须扩展Thread类就可以执行一个新的线程的方法。这种创建线程的方法更具灵活性,也使用户线程能够具有其他的一些类的特征。
      Runnable接口是定义在java.lang包中的一个接口,其声明如下:
       publicinterfacejava.lang.Runnable
      {public abstract void run( );}
      下面的程序由实现Runnable接口来构造多线程。
       publicclassThreadExample2implementsRunnable
      { ThreadExample2 ( )//构造方法
      {Threadt1=Thread.currentThread( ); //创建线程t1
      t1.setName(“The first main thread”);
      t1.start( ); //启动线程t1
      System.out.println(“The running thread:”+Thread1 );
      Threadt2=new Thread(this,“the second thread”); //创建线程t2
      System.out.println(“creat another thread”);
      t2.start();////启动线程t2
      }
      public void run( )
      {try{
       for(int i=0;i

    推荐访问:多线程 技术 Java Java多线程技术 java多线程与高并发 java多线程编程

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