当前位置: 移动互联网学院 > Java培训 > JAVA开发 > Java多线程编程快速入门
Java多线程编程快速入门 时间:2017-06-23     来源:华清远见Java培训中心

Java多线程是学习Java过程中的一个难点,也是各种Java面试中经常被考到的问题。Java多线程编程是什么?使用Java多线程进行编程开发有什么好处?今天华清Java学院小编就为大家整理一下Java多线程编程中一些知识点,希望对大家理解和运用Java多线程编程有所帮助。

Java多线程编程快速入门

①Java多线程是什么?

我们先来了解一下Java多线程的概念:

在多线程技术产生之前,传统的程序运行时同一时刻只能执行单任务操作,效率非常低,如有程序在接收数据时发生阻塞,只有等程序获得数据之后才能继续运行。随着Internet的迅猛发展,这种状况不能被人们所接受,如果网络上接收数据阻塞,后台程序就处于等待状态而不继续任何操作。而这种阻塞是经常会碰到的,此时CPU资源就白白的闲置下来了。

多线程技术的出现改变了这种状况,可以同时运行多个相互独立的线程,如果创建一个线程进行数据输入输出,而创建另一个线程在后台执行其他数据处理,那么当输入输出线程在接收数据时发生阻塞,而处理数据的线程仍然在运行,多线程程序设计大大提高了程序执行效率和处理能力,以实现计算机的并行计算。多线程是Java语言的一大特性,运行多线程机制有效地提高了Java程序的运行能力。

②使用Java多线程编程有什么好处?

Java多线程编程使得程序员能够编写非常有效率的程序来达到充分利用CPU的目的,因为CPU的空闲时间能够保持在低限度。有效利用多线程的关键是理解程序是并发执行而不是串行执行的。例如:程序中有两个子系统需要并发执行,这时候就需要利用Java多线程编程。线程的运行中需要使用计算机的内存资源和CPU。

③Java中进程和线程有什么区别?

对于Java中的进程和线程,小编当时学习Java多线程编程的时候也一直区分不清,那么进程和线程到底有什么区别呢?

进程:进程是一个独立的活动的实体,是系统资源分配的基本单元。它可以申请和拥有系统资源。每个进程都具有独立的代码和数据空间(进程上下文)。进程的切换会有较大的开销。

进程是一个“执行中的程序”。程序是一个静态的没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。也就是说,进程是正在运行的程序的实例(an instance of a computer program that is being executed)。例如,你运行一个qq,就会启动一个进程,再次运行qq,就会再启动一个进程。

线程: 其实,60年代,进程不仅是资源分配的基本单元,还是资源调度的基本单元。然而随着计算机技术的发展,进程出现了很多弊端,一是由于进程是资源拥有者,创建、撤消与切换存在较大的时空开销,因此需要引入轻型进程;二是由于对称多处理机(SMP)出现,可以满足多个运行单位,而多个进程并行开销过大。因此在80年代,出现了能独立运行的基本单位——线程(Threads)。

也就是说,现在,线程才是资源(cpu)调度的基本单元,它是一个程序内部的控制流程。线程是进程内部的更小的单元,它基本不占用系统资源。一个进程内的多个线程是为了协同工作来处理一件事情。

简单总结来说就是,进程进程是为了分配得到资源,然后由它里面的线程利用资源来处理事情。进程是一个壳子,实际干事的都是线程。

④Java多线程编程:线程的创建和启动

通过如下语句可以创建并且启动一个Java线程:

//声明一个对象实例,即创建一个线程

Thread t = new Thread();

//用Thread类的start方法启动线程

t.start();

以上代码通过Thread() 构造方法创建了一个线程,并启动该线程,通过调用start()方法启动线程的run()方法,而Thread类的该方法没有任何操作语句,所以这个线程没有任何操作,要使用线程实现预定功能,必须定义自己的run()方法。

在Java程序设计当中,创建线程有两种方法:

(1)将线程类定义成Thread的子类,该线程子类中重写Thread类的run()方法。在run()方法当中实现程序的处理代码,接下来可以实例化并且启动该子类线程。

(2)实现Runnable接口的类,该类必须实现Runnable接口的run()方法,然后分配该类的实例,在创建Thread 的时候作为一个参数来传递并且启动。

具体的Java多线程编程实例有很多,这里就不过多介绍了,毕竟这篇文章的目的就是帮助大家对Java多线程编程有个整体认识,真正的Java多线程编程不是一两篇文章就能讲清楚的。

后提醒大家一点,虽然通过Java多线程编程,可以编写出非常高效的程序。但是如果你创建太多的线程,程序执行的效率实际上是降低了,而不是提升了。因为,上下文的切换开销也很重要,如果你创建了太多的线程,CPU花费在上下文的切换的时间将多于执行程序的时间!

Java多线程编程相关内容推荐:

Java多线程面试题

Java多线程面试题:进程与线程的区别联系

JAVA多线程对成员变量与局部变量的影响

java多线程常见面试题

Java多线程安全问题

华清远见Java培训

X