java中谈多线程的话必然要牵扯到java.lang.Runnable和java.lang.Thread。从这两个中任选一个都能实现想要的功能。但是二者的意义可谓天壤之别。
Thread的使用比较久远,从面向对象的角度来看,这种方式通过类型的继承来实现代码重用,而Runnable则是比较新的,通过组合来实现代码重用。
与继承相比,组合更接近于“黑箱”式的代码重用。例如,当我们扩展了Thread的run方法,那我们要不要调用基类的run方法以保证一切都运行正常呢?如果要的话,我们是在自己的执行代码之前、之后还是之中来调用呢?开发人员在使用这样的模块时,必须知道模块的内部行为,这肯定是破坏了面向对象中封装的原则。
继承还会带来另外一个问题,缺乏面对需求变更时的灵活性。例如,库开发者想对库作些改进,他们会发现库使用者依赖于某些成员变量的初始化,或者库使用者正通过改变一些成员变量的值来影响基类的行为。这都使得双方的开发不够敏捷。那Thread来说,例如开发了Thread的一个子类ThreadSubclass,当Thread类被更新后,ThreadSubclass类要想重用新基类的代码,就必须作相应变化,这就会破坏原有代码。
继承的第三个麻烦就是,当一个新需求出现时,我们就需要一个新的子类。
组合可以避免上面的问题。
分享到:
相关推荐
《C++面向对象多线程编程》共分13章,全面讲解构建多线程架构与增量多线程编程技术。第1章介绍了用于构建面向对象程序的不同类型C++组件,以及如何使用这些组件来构建多线程架构。第2、3、4章简要介绍进程、线程、多...
C++ 面向对象多线程编程.4/4
C++ 面向对象多线程编程 共四部分
C++面向对象多线程编程,介绍c++的多线程编程
C++ 面向对象多线程编程.pdf 。
面向对象的多线程编程,进程必须至少占有一个线程,所以线程是描述进程内的执行,正是线程负责执行包含在进程的地址空间中的代码。
c++编程 C++面向对象多线程编程 c++标准程序库
c++高级编程 C++面向对象多线程编程 c++标准程序库.pdf
C和C++实务精选 C++面向对象多线程编程
c++ 面向对象多线程编程。简单易懂。
武汉理工大学面向对象与多线程Java综合实验源码 完成时间:2020/11/11 实验目的 运用Java语言,以迭代方式逐步编程实现一个小型档案管理系统。由此了解软件开发的一般过程,深入理解面向对象语言的基本概念和基本...
采用面向对象的设计方法,开发环境VC6.0,多线程架构,注释完整,无文档支持。
面向对象与多线程综合实验做的档案管理系统,包含三类使用人员:系统管理员,档案管理员,普通用户。一共要做七次迭代,每次迭代完成的任务不同。
c++面向对象多线程编程c++面向对象多线程编程c++面向对象多线程编程
面向对象程序设计JAVA 多线程自学教程ppt
c++ 面向对象多线程编程