浅议Java多线程程序设计

时间:2022-03-01 01:11:43

浅议Java多线程程序设计

摘要:多线程是Java语言中一个重要的特性,本文就四个问题进行了阐述:创建线程的方法;线程的生命周期,即创建状态、可运行状态、阻塞状态、终止状态;通过两个实例阐述了实现多线程的两种方法:一是通过扩展Thread类来创建多线程,二是通过实现Runnable接口来创建多线程;通过一个实例阐述了线程同步的实现方法。程序中是否需要多线程,要考虑它是否符合多线程的特点。

关键词:多线程;类;接口;同步

中图分类号:TP311.11 文献标识码:A 文章编号:1007-9599 (2013) 02-0000-02

1 引言

通常,需要将程序划分为数个独立执行的子任务,这些独立的子任务即所谓的线程。线程是进程中的一个单一连续控制流程。一个进程可以拥有多个并行的线程。多线程序的用途很广泛。一般说来,当程序的某一部分与特定事件或资源捆绑在一块时,程序其他部分的执行不因此而搁置,于是便产生一个和该事件或该资源相关的线程,并且让此线程不干扰主程序的运作。多线程可以减轻系统性能方面的瓶颈,提高CPU的处理器的效率。

2 线程的创建与生命周期

2.1 线程的创建

产生线程最简单的方法,是通过继承class Thread来实现。这个class拥有产生、运行线程的所有的必要机制。在Thread中,最重要的方法是run( ),通过覆写此方法,使线程执行指派的工作。这样,run( )就和程序中的其他线程同时执行。

2.2 线程的生命周期

(1)创建状态。一个线程对象被创建。(2)可运行状态。线程获得了CPU的执行时间,便可运行。虽然处于可运行状态,但自定义线程对象并不一定立即运行,其是否运行是由Java的运行系统来协调的。(3)阻塞状态。阻塞状态就是一个线程对象因为人为或系统原因必须暂停运行,以后还可以恢复运行的状态。当下面的几种情况之一发生后,线程对象就由可运行状态进入阻塞状态。一是通过sleep( )让线程进入休眠状态;二是通过suspend( )暂停线程;三是通过wait( )暂停线程;四是线程正在等待某个I/O动作的完成;五是线程试着调用另一个对象的synchronized函数。(4)终止状态。线程的正常结束方式,就是从其run( )中回返。或者是非正常结束,如调用了stop( )。

3 多线程实现方式

3.1 通过扩展Thread类来创建多线程

从程序中可以看出,每个线程分别对应50套服装,它们中间没有其他联系,也就是说,三个线程之间的地位是平等的,不存在谁先谁后的问题,因此,应该是机会均等地得到CPU的处理。但实际上,这三个线程并不一定是交换依次运行,而是在三个线程同时被执行的情况下,有的服装会卖得迟一些,而有的服装会提前卖完,所以,三个线程在真正工作时,有的被分配的CPU的时间多一些,而有的相反要少一些。

从上可知,通过继承线程类而创建的多线程,在程序上看,代码是一样的,可是在执行中,彼此没有联系,拥有自己的资源。

3.2 通过实现Runnable接口来创建多线程

4 线程同步

一个变量被多个线程访问,会带来冲突的问题,那么就需要相应的机制解决冲突,这样,就引入了synchronized 关键字。以下例说明,A和B两人同管一个帐本,A负责存款事情,B负责取款事情。A使用帐本时,B被禁止使用,反之亦然。程序中是否需要多线程,要考虑它是否符合多线程的特点,多线程操作机制对线程通信和线程管理的强大支持才能有用武之地,这时使用多线程才是最合适的。

参考文献:

[1]侯捷.Java编程思想[M].机械工业出版社,2005.

[2]聂哲,袁梅冷,杨淑萍.Java面向对象程序设计[M].高等教育出版社,2005.

[3]张居敏.Java程序设计经典教程[M].电子工业出版社,2008.

[4]印.Java与面向对象程序设计教程[M].高等教育出版社,1999.

[作者简介]白红(1969,11-)女,满族,辽宁省抚顺市人,专业技术职称为高级讲师,大学本科学历,参加过研究生课程进修班的学习,研究方向为计算机应用。

上一篇:关于医院信息网络系统规划与安全分析 下一篇:计算机技术发展中的创造与选择