网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.java反射技术(一).
.join 方法.
.Java编程中的中的“文档”和“包.
.使用Properties类带来的好处.
.Spring Reference Doc.
.Java的产生.
.在 Java 程序设计中处理 DOM 异常.
.Net Install SUNOS.
.如何使用EclipseME开发J2ME程序.
.为TextBox组件创建简单的剪贴板.
.JavaCard开发教程之规范.
.Java虚拟机结构基础研究之一.
.J2EE中几种业务代理模式的实现和.
.Java 项目中应用Subversion配置与.
.Javascript 中 浅拷贝与深拷贝的.
.J2EE运行环境性能优化艺术之三.
.《Java编程思想》(第二版)第09章.
.什么是Java?.
.JBuilder8新特性.
.Weblogic EJB 学习笔记(2).

Java 线 程 的 讨 论 与 应 用 (转)

发表日期:2008-1-5



  Java 线 程 的 讨 论 与 应 用  
龙 士 工
  

一、 为 什 么 要 研 究 和 使 用 线 程
一 般 来 说, 计 算 机 正 在 执 行 的 程 序 称 作 进 程(process), 进 程 有 不 同 的 地 址 空 间 并 且 是 在 同 一 系 统 上 运 行 的 不 同 程 序, 如 W O R D 和Excel, 进 程 间 的 通 讯 是 很 费 时 而 且 有 限 的。 上 下 文 切 换、 改 变 运 行 的 进 程 也 是 非 常 复 杂 的。 进 程 间 通 讯 复 杂, 可 能 需 要 管 道、 消 息 队 列、 共 享 内 存(sharedmemory) 或 信 号 处 理 来 保 证 进 程 间 的 通 讯。 尽 管 许 多 程 序 都 在 运 行, 但 一 次 只 能 与 一 个 程 序 打 交 道。  
线 程(thread) 是 指 进 程 中 单 一 顺 序 的 控 制 流。 又 称 为 轻 量 级 进 程。 线 程 则 共 享 相 同 的 地 址 空 间 并 共 同 构 成 一 个 大 的 进 程。 线 程 间 的 通 讯 是 非 常 简 单 而 有 效 的, 上 下 文 切 换 非 常 快 并 且 是 整 个 大 程 序 的 一 部 分 切 换。 线 程 仅 是 过 程 调 用, 它 们 彼 此 独 立 执 行, 线 程 使 得 在 一 个 应 用 程 序 中, 程 序 的 编 写 更 加 自 由 和 丰 富。 线 程 的 兴 趣 在 于, 一 个 程 序 中 同 时 使 用 多 个 线 程 来 完 成 不 同 的 任 务。 因 此 如 果 很 好 地 利 用 线 程, 可 以 大 大 简 化 应 用 程 序 设 计。 多 线 程 可 以 增 进 程 序 的 交 互 性, 提 供 更 好 的 能 力 和 功 能、 更 好 的GUI 和 更 好 的 服 务 器 功 能。 给 二 个 例 子 说 明 如 下:  

例 一: 利 用 多 线 程 并 行 机 制 可 以 很 好 地 解 决 交 互 式 网 络 程 序 中 的 许 多 问 题, 如: 大 量 的 网 络 文 件 资 源 的 读 写、 用 户 输 入 响 应、 动 画 显 示 等 问 题 不 需 要 C P U 的 多 少 时 间; 而 耗 时 的 复 杂 计 算 通 常 并 不 需 要 立 即 响 应, 所 以 无 需 将 C P U 全 给 它。 例 如, 从 一 个 慢 速 的 网 络 上 读 取 一 数 据 流 也 许 要 1 分 钟 时 间, 但 需 要 C P U 参 与 传 输 数 据 的 时 间 则 非 常 短; 响 应 用 户 的 输 入 如 击 键, 就 算 最 快 的 输 入 员, 1 秒 钟 击 键 1 0 次, 也 不 需 要 C P U 的 多 少 时 间。 动 画 程 序 比 较 耗 时, 一 幅 画 在 1 秒 内 要 重 绘 5 - 1 0 次, 但 C P U 在 大 部 分 时 间 仍 处 于 空 闲 状 态。 在 传 统 的 单 线 程 环 境 下 的 问 题 是 用 户 必 须 等 待 每 个 任 务 完 成 后 才 能 进 行 下 一 个 任 务。 即 使 C P U 大 部 分 时 间 空 闲, 也 只 能 按 步 就 班 地 工 作。 多 线 程 可 以 很 好 地 解 决 这 些 问 题 避 免 引 起 用 户 的 等 待。 如: 耗 时 的 复 杂 计 算 应 用 就 可 划 分 成 两 个 控 制 线 程: 一 个 处 理GUI 的 用 户 事 件, 另 一 个 进 行 后 台 计 算。  

例 二: 如 并 发 服 务 器, 它 面 向 不 定 长 时 间 内 处 理 完 的 请 求, 对 每 个 请 求 由 服 务 器 的 线 程 处 理。 传 统 的 并 发 服 务 器 往 往 是 基 于 多 进 程 机 制 的, 每 个 客 户 一 个 进 程, 需 要 操 作 系 统 的 干 预, 进 程 的 数 目 受 操 作 系 统 的 限 制。 本 文 利 用Java 的 线 程 机 制 建 立 了 基 于 多 线 程 的 并 发 服 务 器。 生 成 和 管 理 他 们 是 相 当 简 单 的 操 作。 线 程 被 用 来 建 立 请 求 驱 动 的 服 务 程 序, 每 个 客 户 一 个 线 程, 多 个 线 程 可 以 并 发 执 行。 特 别 地 线 程 具 有 如 下 特 性(1) 线 程 共 享 父 进 程 的 所 有 程 序 和 数 据(2) 有 自 身 的 运 行 单 元(3) 有 它 自 己 的 私 有 存 储 和 执 行 环 境( 尤 其 是 处 理 器 寄 存 器), 使 得 服 务 器 进 程 不 随 客 户 数 的 增 加 而 线 性 增 加。 可 减 少 服 务 器 进 程 的 压 力, 降 低 开 销, 充 分 利 用CPU 的 资 源。 以 上 并 发 服 务 器 在 某 一 瞬 间 由 同 一 服 务 器 进 程 所 产 生 的 多 个 并 发 线 程 对 多 个 客 户 的 并 发 请 求 采 取 分 而 治 之 的 措 施, 从 而 解 决 了 并 发 请 求 的 问 题。 各 线 程 即 可 以 独 立 操 作, 又 可 以 协 同 作 业。 降 低 了 服 务 器 的 复 杂 度。  

Java 是 基 于 操 作 系 统 级 的 多 线 程 环 境 之 上 设 计 的,Java 的 运 行 器 依 靠 多 线 程 来 执 行 任 务, 并 且 所 有 类 库 在 设 计 时 都 考 虑 到 多 线 程 机 制。  

二、Java 线 程 的 结 构
Java 支 持 一 种“ 抢 占 式”(preemptive) 调 度 方 式。  
线 程 从 产 生 到 消 失, 可 分5 个 状 态:  
Newborn
线 程 在 己 被 创 建 但 未 执 行 这 段 时 间 内, 处 于 一 个 特 殊 的"Newborn" 状 态, 这 时, 线 程 对 象 己 被 分 配 内 存 空 间, 其 私 有 数 据 己 被 初 始 化, 但 该 线 程 还 未 被 调 度。 此 时 线 程 对 象 可 通 过start() 方 法 调 度, 或 者 利 用stop() 方 法 杀 死. 新 创 建 的 线 程 一 旦 被 调 度, 就 将 切 换 到"Runnable" 状 态。  

上一篇:JAVA 事例教程(1) 人气:623
下一篇:java 文件操作大全 人气:678
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐