JAVA中多线程编程方法的实例

  

JAVA中多线程编程方法的实例?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!

,

程序是一组指令的有序集合,也可以将其通俗地理解为若干行代码。它本身没有任何运行的含义,它只是一个静态的实体,它可能只是一个单纯的文本文件,也有可能是经过编译之后生成的可执行文件。
? ?从狭义来说,进程是正在运行的程序的实例;从广义上来说,进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。进程是操作系统进行资源分配的基本单位。
? ?线程是进程中可独立执行的最小单位,它也是处理器进行独立调度和分派的基本单位。一个进程可以包含多个线程,每个线程执行自己的任务,同一个进程中的所有线程共享该进程中的资源,如内存空间,文件句柄等。

<强> 1,什么是多线程编程

多线程编程技术是JAVA语言的重要特点。多线程编程的含义是将程序任务分成几个并行的子任务,并将这些子任务交给多个线程去执行。
? ?多线程编程就是以线程为基本抽象单位的一种编程范式。但是,多线程编程又不仅仅是使用多个线程进行编程那么简单,其自身又有需要解决的问题。多线程编程和面向对象编程是可以相容的,即我们可以在面向对象编程的基础上实现多线程编程。事实上,JAVA平台中的<>强一个线程就是一个对象

<强> 2,为什么要使用多线程编程

现在的计算机动辄就是多处理器核心的,而每一个线程同一时间只能运行在一个处理器上。如果只采用单线程进行开发,那么就不能充分利用多核处理器的资源来提高程序的执行效率。而使用多线程进行编程时,不同的线程可以运行在不同的处理器上。这样一来,不仅大大提高了对计算机资源的利用率,同时也提高了程序的执行效率。

<强>三、JAVA线程API简介

java.lang.Thread类就是JAVA平台对线程的实现.Thread类或其子类的一个实例就是一个线程。

<强> 1,线程的创建,启动,运行

在JAVA平台中,创建一个线程就是创建一个线程类(或其子类)的示例。每个线程都有其要执行的任务。线程的任务处理逻辑可以在线程类的运行方法中直接实现或者通过该方法进行调用,因此运行方法相当于线程的任务处理逻辑的入口方法,它应该由JAVA虚拟机在运行相应线程时直接调用,而不应该由应用代码进行调用。
? ?运行一个线程实际上就是让JAVA虚拟机执行该线程的运行方法,从而使任务处理逻辑代码得以执行。如果一个线程没有启动,它的运行方法是绝对不会被执行的。为此,首先需要启动线程.Thread类的开始方法的作用是启动相应的线程。启动一个线程的实质是请求虚拟机运行相应的线程,而这个线程具体何时能够运行是由线程调度器(线程调度器是操作系统的一部分)决定的,因此,调用线程的开始方法并不意味着线程已经开始运行,这个线程可能马上开始运行,也有可能稍后才被运行,也有可能永远不运行。
? ?下面介绍两种创建线程的方式(实际上还有其他方式,后续文章中会详细介绍)。在此之前我们先来看一下线程类的运行方法的源码:

//1-1@Override代码   公共空间run () {   如果(目标!=null) {   target.run ();   }   }

这个运行方法是在接口可运行中定义的,它不接受参数也没有返回值。事实上运行的接口中也只有这一个方法,因此这个接口是一个函数式接口,这意味着我们可以在需要Runnable的地方使用λ表达式.Thread类实现了这个接口,因此它必须实现这个方法.target是线程类中的一个域,它的类型也是Runnable.target域表示这个线程需要执行的内容,而线程类的运行方法所做的也只是执行目标的运行方法。
? ?我们刚刚提到,Java虚拟机会自动调用线程的运行方法。但是,线程类的运行方法已经定义好了,我们没有办法将自己需要执行的代码放在线程类的运行方法中,因此,我们可以考虑其他的方式来影响运行方法的行为。第一种就是继承线程类并重写运行方法,这样JVM在运行线程时就会调用我们重写的运行方法而不是线程类的运行方法;第二种方法是将我们要执行的代码传递给线程类的目标方法,而刚好线程类有几个构造器可以直接对目标进行赋值,这样一来,JVM在调用运行方法时执行的仍然是我们传递的代码。

JAVA中多线程编程方法的实例