Java 多线程技术在物流仿真软件开发中的应用
顾玉洁, 汤军社
( 西北工业大学 机电学院, 陕西 西安 710072)
摘要: 通过对 Java 多线程的介绍, 将其应用于物流仿真软件的开发, 通过多线程技术来实现物流 过程中的分布交互式仿真。采用 UM L 标准建模, 使过程标准化、可视化, 并且对系统主要的对象 进行了状态分析, 使其简单易懂。
关键词: 多线程; 仿真; U ML
中图分类号: TP391. 9 文献标识码: A 文章编号: 1672- 1616( 2009) 09- 0061- 04
近年来, 由于现代化技术不断推陈出新, 尤其 是信息技术的飞速发展, 世界制造业发生了重大变 化, 最突出的特征是制造业的全球化趋势加强, 商 品流动加快; 工厂规模扩大, 生产环节的多样性等 等。传统的基于顺序 的仿真方法存在 局限性, 并 发、交互事件的大规模发生不能在小规模离散事件 模拟方法基础上进行, 且会在物流 环节上造成损 失, 或不能达到满意结果。
对于复杂的现实系统的研究, 用离散数学的观 点有时会由于错误假设而有建模偏差, 而传统的仿 真时钟推进机制也影响了仿真系统不能精确地模 拟现实系统, 仿真时钟推进只能在离散事件时间点 上跳跃, 事件也在瞬间完成, 而且不能与其他事件 交互, 也不能有自己的控制流。
这些问题都可以用多线程技术得到很好的解 决。多线程技术是同一个进程下包含的多个轻量 级进程, 与进程不同的是线程能够在进程范围内共 享资源, 并且可以并发执行。考虑一个仿真应用程 序, 要模拟多个实体之间的交互作用, 给每个实体 一个自己的线程可以使许多仿真程序的建模大大 简化。本文最后通过一些实例的建模向读者展示 多线程在物流仿真中的应用。
1 在 Java 中实现多线程
大多数的操作系统都支持线程, 而且线程的概 念以各种形式存在了好多年。但是 Java 是第一个 在语言本身显示的包含线程的主流编程语言, 没有 把线程化看作是底层操作系统的工具。
a. 作为一个完全面向对象的语言, Java 提供了
类 java. lang . T hread 来方便多线程的编程。
( 1) 继承 T hread 类, 覆盖方法 run( ) , 加入线程 所需要执行的代码即可。但是 Java 是单继承, 已 经继承了 T hread 类, 就不能继承其他类了, 所以可 以实现 Runnable 接口。
( 2) 实现 R unnable 接口, 使用 Runnable 接口 来实现多线程使得我们能够在一个类中包含所有 的代码, 有利于封装。
b. 线程的 4 种状态。
( 1) 新状态( N ew ) : 线程已被创建但尚未执行。
( 2) 可执行状态( Runnable) : 线程可以执行, 虽 然不一定正在执行。
( 3) 死亡状态 ( Dead) : 正常情况下 run ( ) 返回 使得线程死亡。
( 4) 阻塞状态( Blocked) : 线程不会被分配 CPU 时间, 无法执行。
线程的模型如图 1 所示。
图 1 线程模型图 c. 线程的优先级( Priority) 。
线程的优先级代表该线程的重要程度, 当有多 个线程处于可执行状态并等待获得 CPU 时间时, 线程控制系统根据各个线程的优先级来决定谁分 配 到CPU 时间, 优先级高的线程有更大 的机会获
收稿日期: 2008- 12- 01
作者简介: 顾玉洁( 1984- ) , 女, 陕西西安人, 西北工业大学硕士研究生, 主要研究方向为管理科学与工程。
应用研究 顾玉洁 汤军社 Java 多线程技术在物流仿真软件开发中的应用 61
得 CPU 时间。
例如, 有 2 个加工台同时对一个 AGV 小车发 出信号, AGV 小车的类实例根据这 2 个加工台的 线程判断优先级高低, 先给高优先级的线程分配时 间, 避免冲突。线程优先级的设定便于加工系统中 突发事件的控制, 如加急作业、故障修理等等。
d. 线程的同步( synchronize) 。
由于同一进程的多个线程共享同一片存储空 间, 在带来方便的同时也带来了访问冲突这个严重 的问题。Java 语言引入了 锁 的概念: 每个对象都 有一把锁, 用来保证任一时刻只能有一个线程访问 该对 象。它 包 括 2 种 方 法: synchronized 方 法和 sy nchronized 块。
sy nchronized 方法控制对类成员变量的访问:
每个类实例对应一把锁, 每个 synchronized 方法都 必须获得调用该方法的类实例的锁方能执行, 否则 所属线程阻塞, 方法一旦执行, 就独占该锁, 直到从 该方法返回时才将锁释放, 此后被阻塞的线程方能 获得该锁, 重新进入可执行状态。
例如小车正在为一个加工台服务, 该小车类的 线程就处于独占状态, 对于其他加工台的请求就不 能同时响应, 直到此线程服务结束, 释放该锁, 才能 响应另外的请求[ 1]。线程同步模型如图 2 所示。
图 2 线程同步模型
若将一个 大的方法声 明为 synchronized 将会 大大影响效率, 所以 Java 提供了 synchronized 块来 解决这个问题。
sy nchronized( sy ncO bject ) {
/ / 要求同步的代码 }
sy nchronized 块是这样的一个代码块, 其中的 代码必须获得对象 syncObject 的锁才能执行, 由于 可以针对任意代码块, 且可任意指定上锁的对象, 故灵活性较高。
e. 线程的阻塞。
阻塞是指暂停一个线程的执行以等待某个条 件发生。例如, 某设备在工作时突然出现故障, 该
设备的线程就得停下来等待修理, 也就是所谓的线 程的阻塞, 阻塞状态要等到修理线程的结束返回信 号才能重新恢复。线程阻塞有以下几种方法:
( 1) sleep( ) 方法: 该方法使得线程在指定时间 内( 比如随机的加工持续时间) 进入阻塞状态, 不能 得到 CPU 时间, 指定的时间一过, 线程重新进入可 执行状态。
( 2) suspend( ) 和 resume( ) 方法: suspend( ) 使线 程变成挂起状态, 并且占用资源, 直到有 resume( ) 使这个挂起的线程继续执行, 可以应用在故障处理 仿真上, 当实体产生故障, 进入修理状态并等待修 理完成信号。
( 3) yield( ) 方法: yield( ) 方法使得线程放弃当 前分得的 CPU 时间, 但是不会使线程阻塞, 随时可 能再次分得 CP U 时间。
( 4) w ait ( ) 和 notify ( ) 方法: 这对方 法与 sus- pend( ) 和 resume( ) 方法的区别在于, 阻塞时不会占 用锁。
2 仿真系统中有关控制的类
控制类是 一个抽象类, 是控制线 程和对象 的 类, 其中线程控 制是本文要 重点说明 的。在 Java 开发语言中, 除系统线程外的每个线程又隶属于另 一个线程组, 可以在创建线程组时指定其隶属的线 程组, 若没有指定, 则缺省的隶属于系统线程组。
这样, 所有线程组组成了一棵以系统线程组为根的 树。
在基于 Java 的多 线程仿真机制 中, Java 提供 了线程组类, 线程组提供了控制、管理线程的所有 方法, 为仿真模型中线程的管理提供了基础设施, 极大地方便了开发人员。
Java 允许我们对一个线程组中所有的线程同 时进行操作, 比如我们可以通过调用线程组的方法 来设置其中所有线程的优先级, 也可以启动或阻塞 其中的所有线程。
例如, 运行模型时, 将产生的线程加入到其线 程组中, 在主线程中, 仿真钟每推进一步, 就查看线 程组中线程的启动时间, 如果有等于当前仿真时间 的, 就启动, 使模型得到很好的控制。
3 分布交互式仿真的仿真钟问题
以往的仿真钟推进有 2 种方法: 固定步长法和 下次事件法。前者主要应用在连续系统中, 后者可
62 2009 年 5 月 中国制造业信息化 第 38 卷 第 9 期
以应用在离散事件中。例如, 多个被加工实体到达 加工台, 产生请求服务信号, 全部请求信号按时间 先后排成一个队列, 按照某种规则如先到先服务或 者最短时间排列等待。但是在分布式大规模的制 造、物流链的实际系统中, 多个请求对同一服务在 同一时间内到达, 如果对其依次排列, 逐个执行, 就 不能实现同步。
鉴于此, 应用多线程技术, 可以创建一个抽象 的仿真钟线程类, 这样每个参与交互的实体都可以
有自己的仿真钟线 程, 可以添 加到仿真钟线 程组 中, 等待启动[ 2]。
4 基于多线程仿真的 U M L 建模分 析
4. 1 类图分析
实际 系 统 中 有 交 互 的 对 象 都 可 以 实 现 Runnable 接口, 在仿真中实现多线程, 其类图如图
3 所示[ 3, 4]。
图 3 仿真类图 此类图除了以往的面向对象分析的实体类( 静
态实体、动态实体、资源实体) 外, 还有专门的仿真 控制类, 包括仿真钟类、随机数发生器类和线程控 制类[ 5], 它们都实现了 Java 里的 R unnable 接口, 是 实现多线程机制的基础。
4. 2 加工台实体的线程分析
加工台是资源实体, 可以是正常流水线的机加 设备, 也可以是维修人员或设备, 它对其他动态实 体( 被加工物体) 是一对多的关系, 所以也是被争用 的对象, 建立它的线程类是为了方便对仿真时间的 控制, 可以采用 sleep( time) 方法, time 作为加工时 间参数, 可以是符合某一分布随机数。用 suspend ( ) 和 resume( ) 方法来模拟加工台实体出现故障和
故障解除。加工台线程分析如图 4 所示。 图 4 加工台线程分析
应用研究 顾玉洁 汤军社 Java 多线程技术在物流仿真软件开发中的应用 63
4. 3 AGV 小车的线程分析
小车类也是资源实体类, 情况与加工台实体类 似。如图 5 所示。
图 5 AGV 小车线程分析
5 结束语
由于 Java 的跨平台性, 更为分布式 的物流仿 真提供了广阔的发展空间, 采用多线程机制不但能 模拟并行的系统, 还能在系统中实现交互。如果在 软件的设计中采用 UM L 面向对象建模技术, 可使 程序开发过程标准化、可视化, 代码编程也简单化。
参考文献:
[ 1] 詹跃东, 李 莉, 史 扬. 基于 U M L 和多线程的 AG V S 仿真 工具设计[ J ] . 系统仿真学报, 2005( 5) : 871- 874.
[ 2] 接 鹏. 基于 Java 的多线 程离散事 件仿真机 制[ J ] . 现代计 算机, 2005( 5) : 84- 85.
[ 3] 叶俊 民, 汪 望珠. 面 向对 象软 件 工程 使用 U M L、模式、Java ( 第 2 版) [ M ] . 北京: 清华大学出版社, 2006.
[ 4] 白尚旺, 党伟超. Pow er Designer 软件 工程技术 [ M ] . 北京:
电子工业出版社 , 2005.
[ 5] 何 俊, 杜 斌, 李 聪. 面向对象离散仿真平台的设 计[ J] . 计算机仿真, 2008, 25( 7) : 290- 293.
The Application of Java Multi- thread in Development of Logistics System Simulation GU Yu- jie, T AN G Jun- she
( Nort hw est ern Polytechnical U niversity , Shaanxi X i an, 710072, China)
Abstract: Based on Jav a M ult i- t hread, it develops t he logist ics syst em simulat ion. T he syst em set s up D IS ( Distribut ed Int eract ive Simulat ion) in log ist ic process. T he applicat ion of U ML in modeling makes t he pro- cess st andardized and visual. T he crit ical object state analysis makes it easy t o underst and as possible.
Key words: M ult i- thread; Simulat ion; U ML
( 上接第 60 页)
4 理想塑性及线性硬化板材弯曲变 薄理论解与实验结果的比较
由表 1、图 2 和图 3 的结果可以看出, 宽板塑 性弯曲变薄的理论解与当前广泛应用的查表法的 实验数据十分吻合, 其推理严密、结果准确可信。
5 结束语
综上所述, 本文提出的板塑性弯曲变薄的理论解 法从本质上揭示了弯曲变薄的规律, 建立了弯曲变薄
的定量计算公式, 对弯曲变形过程的研究和弯曲工序 的工艺设计具有重要的理论价值和实用意义。
参考文献:
[ l] 臼井英治, 白 坚高洋. 金 属加工力 学[ M ] . 廉 元国译. 北 京: 国 防工业出版社, 1984.
[ 2] H ill R. The M at hemat ical Theory of Plasticit y[ M ] . O xford: O x- f ord U niversity Press, 1950.
[ 3] 肖景容, 姜圭华. 冲压工 艺学 [ M ] . 北京: 机 械工 业出 版社, 1994.
[ 4] 江 荧, 彭炎荣. 关于理想 塑性板 材弯曲 变薄理 论解的 矛盾 及原因分析[ M ] . 塑性工程学报, 2006, 13( 1) : 26- 28.
A Theoretical Solution to Thickness Variation of Bending Metal Sheet JIAN G X ian- yan1, JIA N G Y ing2, PEN G Yan- rong3
( 1. Hunan U niversit y of T echnology, Hunana Zhuzhou, 412000, China) ( 2. Wuhu V ocational Inst itut e of T echnolog y, A nhui Wuhu, 241001, China)
( 3. Xiang tan U niversity , Hunan X iangt an, 411105, China)
Abstract: It presents the theoret ical solut ion t o thickness reduction of bending metal sheet , analyzes the t hin out of bending process w ith ideal plast icity and linear hardening character, derives t he formula for calculation of t he variation of t he suf ace radius, t hickness of t he sheet , t he coeff icient and the inward removal of neutral layer wit h the radius of the inside suface. T he t heoretical calculation is compared w it h the experiment al data.
T he result show s that bot h the theoret ical solut ion and the ex perimental data are very close.
Key words: Plastic Bending ; Perfect Plast icit y; L inear H ardening Charact er; T hickness V ariat ion
64 2009 年 5 月 中国制造业信息化 第 38 卷 第 9 期