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++的多线程编程
总结来说,"多线程面向对象电梯设计"项目是一个综合运用OOP和多线程技术的实例,它涵盖了对象设计、线程管理和并发控制等多个方面。通过这个项目,开发者可以深化对C++编程和并发编程的理解,提升软件设计能力。
C++ 面向对象多线程编程.pdf 。
在IT领域,C++是一种强大的、通用的编程语言,它以其..."C++面向对象多线程编程.pdf"这份文档很可能详细介绍了如何在C++环境中有效地运用这些技术,包括实例代码和实践建议,对学习和提升C++多线程编程技能非常有帮助。
c++编程 C++面向对象多线程编程 c++标准程序库
c++高级编程 C++面向对象多线程编程 c++标准程序库.pdf
C和C++实务精选 C++面向对象多线程编程