• java编程之多线程实战指南(设计模式篇),从基础到避坑


    进程和线程

    一个程序就是一个进程,而一个程序中的多个任务则被称为线程。进程是表示资源分配的基本单位,线程是进程中执行运算的最小单位,亦是调度运行的基本单位。举个例子:打开你的计算机上的任务管理器,会显示出当前机器的所有进程,QQ,360等,当QQ运行时,就有很多子任务在同时运行。比如,当你边打字发送表情,边好友视频时这些不同的功能都可以同时运行,其中每一项任务都可以理解成“线程”在工作。

    使用多线程

    在Java的JDK开发包中,已经自带了对多线程技术的支持,可以很方便地进行多线程编程。实现多线程编程的方式有两种,一种是继承 Thread 类,另一种是实现 Runnable 接口。使用继承 Thread 类创建线程,最大的局限就是不能多继承,所以为了支持多继承,完全可以实现 Runnable 接口的方式。需要说明的是,这两种方式在工作时的性质都是一样的,没有本质的区别。

    多线程的优缺点

    多线程的优点:
    1)资源利用率更好2)程序设计在某些情况下更简单3)程序响应更快

    多线程的代价:
    1)设计更复杂虽然有一些多线程应用程序比单线程的应用程序要简单,但其他的一般都更复杂。在多线程访问共享数据的时候,这部分代码需要特别的注意。线程之间的交互往往非常复杂。不正确的线程同步产生的错误非常难以被发现,并且重现以修复。
    2)上下文切换的开销当CPU从执行一个线程切换到执行另外一个线程的时候,它需要先存储当前线程的本地的数据,程序指针等,然后载入另一个线程的本地数据,程序指针等,最后才开始执行。这种切换称为“上下文切换”(“context switch”)。CPU会在一个上下文中执行一个线程,然后切换到另外一个上下文中执行另外一个线程。上下文切换并不廉价。如果没有必要,应该减少上下文切换的发生。

    很多小伙伴在面试时被多线程难住,今天就给大家推荐这本多线程编程实战指南(设计模式篇),它采用Java (JDK1.6)语言和UML (Unified Modeling Language)为描述语言,并结合作者多年工作经历的相关实战案例,)介绍了多线程环境下常用设计模式的来龙去脉:各个设计模式是什么样的及其典型的实际应用场景、实际应用时需要注意的相关事项以及各个模式的可复用代码实现。

    下面是其中的部分内容

    第1章 Jav多线程编程实战基础

    有一定的多线程编程基础和工作经验的读者,也不妨继续往下看,看后或许会有新的发现。这一章的内容并非纯粹的理论“基础”它更加强调“ 实战’

    第2章 设计模式简介

    第3章Immutable object (不可变对象)模式

    第4章Guarded Suspension ( 保护性暂挂)模式

    第5章Iwo-phase Termination (两阶段终止)模式

    第6章Promise (承诺)模式

    第七章Producer-Consumer (生产者/消费者)模式

    第八章Active object (主动对象)模式

    第9章Thread Pool (线程地)模式

    第10章Thread Specifie Storage (线程特有存储)模式

    第十一章Serial Thread Confinement (串行线程封闭)模式

    第12章Master-Slave (主仆)模式

    第13章Pipeline (流水线)模式

    第14章Ha1f-syn.c/Half-async (半同步/半异步)模式

    第15章模式语言

  • 相关阅读:
    C++ Tutorials: C++ Language: Program structure: Overloads and templates
    精选20个爆火的Python实战项目(含源码),直接拿走不谢
    HTML5图形绘制——canvas元素
    Stable Diffusion 3 真正来了
    WPF列表性能提高技术
    GBase 8c V3.0.0数据类型——网络地址函数和操作符(macaddr函数)
    linux学习
    linux根据指定的文件名杀死进程,再定时重启任务
    TypeScript又出新关键字了?
    Filesystem Hierarchy Standard
  • 原文地址:https://blog.csdn.net/LBWNB_Java/article/details/127701770