• 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章模式语言

  • 相关阅读:
    select在socket中的server多路复用
    【Unity编辑器扩展】| Inspector监视器面板扩展
    使用 Gin 框架实现 HTTP 路由注册的 Go 语言工具函数详解
    Boundary (topology)
    硬盘分区误删数据如何恢复呢?
    数据库系统原理与应用教程(041)—— MySQL 查询(三):设置查询条件
    【C++·峰顶计划】引用操作及底层原理深析,七夕也要学习哦
    DocuWare平台——用于文档管理的内容服务和工作流自动化的平台(上)
    vivo 容器平台资源运营实践
    HyperLynx(四)差分传输线模型
  • 原文地址:https://blog.csdn.net/LBWNB_Java/article/details/127701770