zoukankan      html  css  js  c++  java
  • 多线程和锁,Java架构师必备技能!

    你经常面向CRUD工作吗?

    如果说编程只是单纯的承接产品需求开发系统功能,那么基本可以把程序开发简单理解成按照需求PRD,定义属性创建方法调用展示,这三个步骤。

    尤其是在一些大公司中,会有易用的、完善的、标准的架构体系和运维服务,例如:RPC、MQ、Redis集群、分布式任务、配置中心、分库分表组件、网关等搭配出来的系统架构。也因此让程序员做到只关心业务功能开发

    让程序员只关心业务开发,有成熟的系统架构、有标准的开发流程、有通用的功能设计,对于团队效能提升来说是非常好的事。但一部分程序员正因为有这样的好事,让日复一日的岁月做着同样的事,最后成为工具人。

    如果是框架和中间件的存在,是了让程序员只关心业务开发。那为什么你面试的时候会被问到核心组件的设计和原理呢?

    面试必问的多线程,甚至可能问的还挺深入,比如:AQS、CAS、CLH、MCS、锁升级、对象头等等。但在实际的业务开发中,你用到了吗?可能这也是大部分同学说,面试造火箭的地方!

    互联网应用中有些业务场景开发,就比如我们的核心组件中,数据库连接池、分布式任务中,都会涉及到多线程和锁的使用。也有一些类似商品秒杀的场景,同样需要使用到锁。

    那么,使用多线程为了更大限度的利用资源提升效率,加锁是为了在同一个资源有竞争的情况保证业务流程的正确性。

    就像:数据库连接池为了合理分配数据库资源、商品秒杀是为了库存的竞争。

    可是,在没有需要竞争和分配资源的情况下,一般并不会在分布式场景下使用到多线程。假如我们做一个用户资源单次计数的操作,那么原来的应用是单实例还是可以加锁累加计数的。但现在是分布式应用部署,也就是你可能这一时刻是A实例提供你的需求,当你再次刷新页面后可能访问到的就是B实例。这时候在想做一些实例上的累加,就没那么方便了。

    这也就是在分布式应用框架的应用中,让你能用到多线程和锁的地方并不多的原因。但如果你有需要去了解一些中间件或者核心组件的设计时,就需要了解相关的核心知识。

    想要一次性搞明白多线程、各种锁,提升Java技术能力的同学,

    推荐学习:https://sourl.cn/tk8agc


    架构师必备核心技能,11章节超全面讲解!

    需要提升自己,跳槽涨薪的同学,千万不要错过!

    这也就是在分布式应用框架的应用中,让你能用到多线程和锁的地方并不多的原因。

    但如果你有需要去了解一些中间件或者核心组件的设计时,就需要了解相关的核心知识。

  • 相关阅读:
    jsonp跨域请求
    jQuery之异步Ajax请求使用
    table表格cellspacing与cellpadding属性
    常用正则匹配
    插入数据显示 Duplicate entry '4913' for key 'user_id'
    事件驱动模型 IO多路复用 阻塞IO与非阻塞IO select epool
    python 协程
    python 进程 线程
    python 并发socketserver模块
    python 网络 socket
  • 原文地址:https://www.cnblogs.com/cxmanito/p/14160314.html
Copyright © 2011-2022 走看看