java多任务多线程,基于Java多线程机制的并行多任务的研究和实现

1引言当前C++、Delphi、Java等开发工具支持并发多任务处理。Java多线程机制实现了多任务在宏观上同时执行,提供了并发过程中临界资源保护的同步机制和通信机制。本文以Windows2000为平台,以JDK1.4为开发环境,对上述问题进行分析、研究并给出解决问题的实例框架。2基于Thread子类和Runnable接口的线程的创建Java是一种面向对象的程序设计语言,提供了丰富的类库(包)和应用接口。Java中创建线程有两种方法。1)继承Thread类Java.lang.Thread是系统提供的用来表示进程的类,Thread类中的许多方法提供了比较完整的多线程处理功能。可以用Thread来定义子类,构造用户的线程。其中run()方法至关重要,也是整个线程的核心,其代码是线程所要执行的内容;start()方法的作用是调用run()方法,启动线程。2)实现Runnable接口Java中提供了一个实现多线程的接口Runnable,该接口只有一个方法run(),用户通过重载该方法以实现线程的相关操作。3)两种线程创建方法的比较第一种方法层次清晰,逻辑分明,使用简便,实质上也实现了Runnable接口。第二种方法可以弥补第一种方法的不足,即可以实现多重继承(Java中的类只能单重继承)。3Java并发机制的分析和研究1)基于synchronized和monitor的互斥机制Java中利用synchronized锁定标志来定义临界资源,这里的临界资源可以是方法,或代码段。在程序中有synchronized标志的方法或代码段在任一时刻只能有一个线程可以进入访问,即实现了临界资源的互斥访问。同时又引入了类似于信号量机制的管程(Monitor),Java为每一个对象分配一个管程,其作用是负责管理线程对临界资源的访问。一个线程访问某临界资源,就获得了该临界资源所属对象的管程,并且管程“上锁”,其它想访问该临界资源的线程必须等待至管程“开锁”。2)基于wait()和notify()的交互协同通信机制synchronized解决了临界资源的互斥访问问题。现实应用中,对临界资源互斥访问的同时,线程之间还要相互通信和互通消息,Java为了解决多线程之间的协作问题,提供了3个标准的Object类的方法:wait()、notify()和notifyAll()。wait()作用是使当前运行的线程由运行态转为阻塞态,进入等待队列的wati()集中,并且释放管程;notify()的作用是唤醒wait()集中的队首线程,使线程由阻塞态转为可运行态;notifyAll()的作用是将所有wati()集中的线程都唤醒。Wait()和notify()的配对使用能很好地实现互斥中的通信。互斥机制实现原理如图1所示。等待访问临界资源的线程置管程为开锁状态管程状态获得管程释放管程临界资源LockedUnlocked图1互斥机制实现原理图3)基于互斥和交互通信机制的完全意义的同步同步是指多个线程在一些关键点上的互相等待和互通消息。Java的synchronized实现了线程互斥,wait()和notify()实现了线程间的通信,分别解决了数据一致性和多线程的协作问题,实现了完全意义上的同步。4基于完全同步的一个并发多任务的实用例程1)实用例程构造一个共享缓冲区类SharedBuffer,有相关的数据属性,一个send()发送方法,一个receive()接收方法,均为同步方法,两个方法都通过wait()和notify()来实现交互通信。另构造由Thread类继承而来的两个子类,分别是Sender和R

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值