首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>java>java企业应用>正文

架构与模式:多线程有几种常用的编程模型

http://www.oklinux.cn  2008-03-07  来源: 赛迪网 执木  会员收藏  游客收藏  【 】 

其实我们编程只要尽量站到比较高的层次,很多道理其实你会发现你已经懂了。

就多线程来说,我们开始设想只有两个线程(>2时是不是算数学归纳法?)那么如果两个独立的线程会发生什么呢?

1。当一个线程进入moniter(也就是说站用一个object),另一个线程只有等待或返回,而我们把返回就称为一种模式,这种模式的英文是Balking。

2。这两个线程可以是有序的执行,而不是让OS来调度,这时我们要用一个object来调度,这种模式称为Scheduler。(这个词及其含义其实OS中就有)。

3。如果这两个线程同时读一个资源,我们可以让他们执行,但如果同时写的话,你闭着眼睛都会知道可能出现问题,这时我们就要用另一种模式(Read/Write Lock)。

4。如果一个线程是为另一个线程服务的话,比如IE中负责数据传输的线程和界面显示的线程,当一个图片没有传完时,另一个线程就无法显示,至少是部分没有传完。那么这时我们要用一个模式称为生产者和消费者,英文是Producer-Consumer。

5。两个线程的消亡也可以不是完全又OS来控制的,这时我们需要给出一个条件,使得每个线程在符合条件是才消亡,也就是有序的消亡,我们称为Two-Phase Termination。

那么有这5个线程模型,基本上可以用到大多数编程任务中。我需要指出的三点是:

1。从高层次上我们可以再验证是否含盖了所有的情况。

2。其实模式不是完全固定的或者说象定律一样,而模式可以为不同的情况进行适当 的调整和组合,目的是为了简洁和高效。

3。学习模式是为了具备更好的分析问题的能力。

而似乎这些来自西方的技术,并且是目前的,我们有没有呢?其实我个人有个大胆的推测,我认为我们祖先的《孙子兵法》就是很好设计模式,因为它符合设计模式需要的基本特征,就是在特定的条件下,用某种特定的方式合理且高效的解决问题。只不过一是用在军事上,二是完备性方面我们还没研究。但我认为我们至少没有很好的扩展和进行类比式的应用,否则今天可能是我们中国人教外国人什么是设计模式。

类比的方法实际上是发明或发现的常用方法。不知能否让你感觉到其实外国的技术并不是那么的神秘,也许我们从自身的文化当中挖掘出的东西太少了。


上一篇:建立JSP操作用以提高数据库访问的效率   下一篇:Java程序开发过程中异常处理的特殊情况


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Java程序开发过程中异常处理的特殊情况
·建立JSP操作用以提高数据库访问的效率
·学习心得 - JSP处理异常及一些高级主题
·使用JAVA中的动态代理实现数据库连接池
·JAVA入门基础:区分引用类型和原始类型
·Weblogic下使用jsp查询的Entity Bean
·基础:从XML到Java代码的数据绑定之对象
·Java理论和实践:用软引用阻止内存泄漏
·开发JAVA编程中字符串分割的两种方法
·Servlet及JSP中遇到的多线程同步问题
·超线程多核心下Java多线程编程彻底分析
·如何配置Java Server Page运行环境
·JAVA高级:Java中限时线程回调方式的实现
·不要重新分配被锁定对象的对象引用
·如何利用DES加密的算法保护Java源代码
·以全局的固定顺序获取多个锁来避免死锁
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Java SE6调用Java编译器的两种新方法
·表现层框架Struts/Tapestry/JSF比较
·在Web项目中用到JNI时应该注意的问题
·JBuilder7 Weblogic7 mysql开发EJB配置
·进阶:Java Reflection (JAVA反射)详解
·以全局的固定顺序获取多个锁来避免死锁
·JAVA高级:Java中限时线程回调方式的实
·超线程多核心下Java多线程编程彻底分析
·开发JAVA编程中字符串分割的两种方法
·Java理论和实践:用软引用阻止内存泄漏
·JAVA入门基础:区分引用类型和原始类型
·学习心得 - JSP处理异常及一些高级主题
  阅读排行
·Commons-logging Log4j 的入门指南
·进阶:Java Reflection (JAVA反射)详解
·服务器及中间件:TomCat 多虚拟站点配置
·开发框架:一篇关于SSH架构的简单总结
·在Web项目中用到JNI时应该注意的问题
·表现层框架Struts/Tapestry/JSF比较
·开发框架-Struts里过滤器的简单使用
·使用JAVA中的动态代理实现数据库连接池
·Java SE6调用Java编译器的两种新方法
·数据库相关:Log4j和JDBMonitor的比较
·Java语言:敏捷开发技巧-消除代码异味
·jboss4.0下使用MySql数据源的设置方法
·Hibernate源码中几个包的作用简要介绍
·开发工具:在Eclipse中报错的解决方案
·开发框架:深入了解 Struts Validator
网摘收藏: