![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础技术
文章平均质量分 86
楚景然
风起于青萍之末 浪成于微澜之间
展开
-
初识并发编程(拓展)
1:死锁1.1基础所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。线程死锁是指由于两个或者多个线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行。当线程进入对象的synchronized代码块时,便占有了资源,直到它退出该代码块或者调用wait方法,才释放资源,在此期间,其他线程将不能进入该代码块。当线程互相持有对方所需要的资源时,会互相等待对方释放...原创 2021-10-28 11:04:13 · 225 阅读 · 0 评论 -
初识并发编程(六) 线程池
1:new Thread 弊端 每次 new Thread 新建对象,性能差。 线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多系统资源导致死机或 OOM。 缺少更多功能,如更多执行、定期执行、线程中断。2:线程池的好处重用存在的线程,减少对象创建、消亡的开销,性能佳。可有效控制最大并发线程数,提高系统资源利用率,同时可以避免过多资源竞争,避免阻塞。提供定时执行、...原创 2021-10-28 10:57:23 · 168 阅读 · 0 评论 -
初识并发编程(五) 初识 J.U.C
1:基础在 Java 5.0 提供了 java.util.concurrent (简称JUC )包,在此包中增加了在并发编程中很常用的实用工具类,用于定义类似于线程的自定义子系统,包括线程池、异步 IO 和轻量级任务框架。提供可调的、灵活的线程池。还提供了设计用于多线程上下文中的 Collection 实现等。2:AQS(AbstractQueuedSynchronizer) AQS,在java.util.concurrent.locks包中,Abstr...原创 2021-10-28 10:25:15 · 246 阅读 · 0 评论 -
初识并发编程(四) 线程安全策略
1:不可变对象让对象在多个线程保证 保证对象是线程安全,实际是躲避了并发。1:对象创建以后其状态就是不可修改2:对象所有域都是final类型3:对象都是正确创建的(在创建期间,this引用没有溢出)。final class(不能被集成)。private 成员,使其不能被外部访问。没有SetXXX,让其不能被外部赋值,所有可变成员设置为final... demo1: final关键字 :可以 修饰 类(不能被集成,尽量不要用来修饰类)、方法(1:锁定方法不能被集成类...原创 2021-10-27 17:09:37 · 178 阅读 · 0 评论 -
初识并发编程(三) 发布对象
1.基础发布:使对象能够在当前作用域之外的代码中使用对象逸出:一种错误的发布,当一个对象还没构建完成时,就被其他线程所见。不安全发布:这个代码通过public访问级别发布了类的域,在类的任何外部的线程都可以访问这些域我们无法保证其他线程会不会修改这个域,从而使私有域内的值错误(上述代码中就对私有域进行了修改)package com.mmall.concurrency.example.publish;import com.mmall.concurren...原创 2021-10-27 14:31:10 · 122 阅读 · 0 评论 -
初识并发编程(二) 并发编程与线程安全
1:线程安全性1.1定义 定义:当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些进程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。 原子性:提供了互斥访问,同一时刻只能有一个线程来对它进行操作。 可见性:一个线程对主内存的修改可及时的被其他线程观察到。 有序性:一个线程观察其他线程中的指令执行顺序,由于指令重排序的存在,该观察结果一般...原创 2021-10-27 11:27:49 · 112 阅读 · 0 评论 -
初识并发编程(一) 基础理论
1:基础并发:同时拥有两个或者多个线程,如果程序在单核处理器上运行,多个线程将交替地换入或者换出内存,这些线程是同时"存在"的,每个线程都处于执行过程中的某个状态,如果运行在多核处理器上,此时,程序中的每个线程都将分配到一个处理器核上,因此可以同时运行.高并发:高并发( High Concurrency )是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求. 高并发相关常用的一些指标有响应时间(Res...原创 2021-10-27 10:27:49 · 112 阅读 · 0 评论 -
关于三层架构
关于软件架构的定义本人比较模糊,于是结合网上的定义总结了一下软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。 软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向原创 2018-01-27 14:44:00 · 239 阅读 · 0 评论 -
收集一些知识点归纳[网上资料太多,所收集一些容易理解的文章] aop、依赖注入-控制反转
1】控制反转,依赖注入【图片以及内容来源http://blog.xiaohansong.com/2015/10/21/IoC-and-DI/#(感谢此博主的分享,使得这个点十分好理解)】控制反转(Inversion of Control)是一种是面向对象编程中的一种设计原则,用来减低计算机代码之间的耦合度。其基本思想是:借助于“第三方”(也就是IOC容器)实现具有依赖关系的对象之间的解耦。...转载 2018-09-25 11:07:43 · 238 阅读 · 0 评论