并发编程 总结

        1、书籍
            Java编程思想
            企业架构模式
            Java并发编程实战


        2、注册中心
            Redis
            zookeeper
            SpringCloud

        3、IO
            BIO 阻塞IO
            NIO 非阻塞
        
        4、Netty

            用到的技术Future

        5、消息中间件
            RabbitMQ,RocketMQ,ActiveMQ,Kafka

        6、MQ

            场景1
            两系统间的数据通信,一个生产一个消费,两者不是一个节拍
                    后系统会产生一个严重的内存的堆积,最后内存溢出
            使用消息中间件,做缓冲

            场景2
            分布式系统
            数据生产,统一放到MQ中,然后生成订阅关系
            减少系统间交织的接口的复杂性

            RPC Dubbos

        7、线程安全

            多个线程访问某一个类或对象或方法时,这个类
            始终都能表现出正确的行为

            【1】无static的方法,关键字synchronized取得的锁都是对象锁
                 线程持有该方法所属对象的锁
            【2】关键字synchronized如果修饰的是静态的方法
                 相当于在类上加锁,独占.Class类

            private AtomicInteger num 原子性的

            sychronized 可以在任意的对象及方法上加锁,而加锁的这段代码
            称为互斥区或临界区

            多个线程访问某线程的run方法时,以排队的方式进行处理
            这里排队是按照CPU分配的先后顺序而定的,不是按照线程在
            代码中创建的顺序执行的
            
        8、对象锁的同步和异步
            同步synchronized
            同步的概念就是共享,如果不是共享的资源,就没有必要进行同步

            异步asychronized
            异步的概念就是独立,相互之间不受到任何制约
            就好像我们学习http时,在页面发起的ajax请求,我们可以继续浏览或操作页面的内容
            二者之间没有任何关系

            同步的目的就是为了线程安全,对于线程安全来说,需要满足两个特性:
                原子性
                可见性

            对象是一把锁,如果对象的属性发生变化是不影响锁的
            
                
        9、业务数据的脏读
            
            如果设置值得方法耗时较长
            或者值得方法耗时短,会产生脏数据,即数据不一致的情况
            
            在我们对一个对象的方法加锁的时候,需要考虑业务的整体性
            即为setValue/getValue方法,同时加synchronized同步关键字
            保证业务的原子性,不让回出现业务的错误
            
            数据库的ACID

            A 原子性
            C 一致性
            I 隔离性
            D 永久性
            
        10、锁重入
            当一个线程得到一个对象的锁后,再次请求
            此对象时是可以再次得到该对象的锁
            
            如:执行一个队列任务,很多对象都去在
            等待一个对象正确执行完毕再去释放锁
            但是第一个对象由于异常的出现,导致业务逻辑
            没有正常执行完毕,就释放了锁,后续的对象执行的都是
            错误的逻辑

        11、volatile
      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "并发编程实战"是一本经典的编程书籍,该书的指导了我们如何处理并发编程中的各种问题。在书中,作者通过详细的示例代码向读者展示了如何解决并发编程中的各种挑战。 书中的示例代码是作者通过实践总结出来的,能够真实地反映出并发编程的现实情况。它们涵盖了并发编程的各个方面,包括线程间的协作、共享资源的同步访问、死锁的避免和解决等等。 这些示例代码不仅仅是为了演示问题,更重要的是教会读者如何正确地处理并发编程中的问题。通过学习这些示例代码,我们可以了解到并发编程中常见的错误和陷阱,并学会如何规避它们。 在书中,作者并没有止步于示例代码的展示,他还详细地解释了每段代码的设计思路和原理。通过深入地解析这些示例代码,我们可以更好地理解并发编程中的关键概念和技术,从而能够在实际项目中灵活运用。 总的来说,"并发编程实战"这本书的示例代码是非常实用和有价值的。通过学习和理解这些代码,我们可以提升自己在并发编程领域的能力,更好地应对并发编程中的各种挑战。 ### 回答2: "C 并发编程实战" 是一本经典的编程书籍,详细介绍了并发编程的各个方面包括并发模型、线程同步、线程安全、锁机制、线程池等。这本书的核心在于通过源代码实例,帮助读者深入理解并发编程概念和技术,并从实践角度掌握相关知识。 "C 并发编程实战"源代码示例给读者提供了一个实践的框架,使他们能够在实际的项目中应用并发编程技术。这些源代码示例往往是基于实际应用场景设计的,通过实例代码的编写和运行,读者可以更加直观地感受到并发编程的特点和挑战。 源代码示例可能涉及到多线程的创建、线程同步的实现、线程安全的问题处理等。例如,可以有一个生产者-消费者模型的示例,展示如何通过多线程实现任务的生产和处理,以及如何使用锁机制来保证线程安全。另外,还可以有一个基于线程池的示例,用于展示如何利用线程池提高并发性能,以及如何管理线程池的各个参数。 通过源代码示例,读者可以学习到在并发编程中的方方面面的知识,掌握并发编程的基本技能。同时,通过实践中的错误和问题,读者还可以学会如何处理常见的并发编程问题,如死锁、饥饿等。 总之,"C 并发编程实战"的源代码示例是一种非常宝贵的学习资源,它能够帮助读者深入理解并发编程的概念和技术,并通过实践掌握相关的编程技能。 ### 回答3: "c并发编程实战"是一本关于并发编程的经典书籍,旨在帮助读者理解和应用并发编程的原理和技术。在该书中,作者通过详细讲解并发编程的核心概念,并提供了丰富的源代码示例,以帮助读者更好地理解和运用这些概念。 书中的源代码示例非常实用,涵盖了多线程、锁、线程池、阻塞队列、并发容器等多个方面的内容。这些示例代码通过具体的场景和问题,展示了不同并发编程技术的应用,使读者能够学以致用。 源代码示例中,作者注重讲解每个示例的实现原理和核心思想,并配以详细的注释,方便读者理解。读者可以通过运行这些示例代码,深入理解并发编程的实际应用,并通过代码的演示,发现其中的问题和解决方案。 此外,书中的源代码示例还提供了一些常见的并发编程模式,如生产者-消费者模式、读写锁模式等。这些模式可以帮助读者在实际项目中更好地设计和开发高效的并发程序。 总的来说,“c并发编程实战”这本书的源代码示例丰富实用,帮助读者深入理解并发编程的原理和技术,并能够应用这些知识解决实际问题。无论是新手还是有一定经验的开发者,都可以从中获益匪浅。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值