![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发
文章平均质量分 74
不知努力的bd
这个作者很懒,什么都没留下…
展开
-
线程池详解
一、为什么要用线程池 线程池解决的核心问题就是资源管理问题。在并发环境下,系统不能够确定在任意时刻中,有多少任务需要执行,有多少资源需要投入。这种不确定性将带来以下若干问题: 1)频繁申请/销毁资源和调度资源,将带来额外的消耗,可能会非常巨大。 2)对资源无限申请缺少抑制手段,易引发系统资源耗尽的风险。 3)系统无法合理管理内部的资源分布,会降低系统的稳定性。 为解决资源分配这个问题,线程池采用了“池化”(Pooling)思想。池化,顾名思义,就是将资源统一在一...原创 2022-05-11 00:24:54 · 623 阅读 · 0 评论 -
事务隔离级别
一、什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行。 事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元,这个转账会涉及 到两个关键操作就是:将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误比如银行系统崩溃,导致小明余额减少而小红的余额没有增加,这样就不对了。事务就是保证这两个关键操作要么都成功,要么都要失败。 二、事务的特性(ACID) 原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成原创 2022-04-04 00:35:13 · 236 阅读 · 0 评论 -
synchronized锁的升级过程
1.三种方式加锁 1)修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁。 2)静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁。 3)修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。 2.无锁 无锁是指没有对资源进行锁定,所有的线程都能访问并修改同一个资源,但同时只有一个线程能修改成功。 特点:修改操作会在循环内进行,线程会不断的尝试修改共享资源。如果没有冲突就修改成功并退出,否则就会继续循环尝试。如果有多个线程修改同一个值,必定原创 2022-03-28 21:54:59 · 1830 阅读 · 0 评论 -
synchronized部分简单用法
synchronized修饰静态/非静态方法 public static void main(String[] args) { Thread t1 = new Thread() { @Override public void run() { Person.m1("线程1"); } }; Thread t2 = new Thread() {原创 2022-03-19 23:55:26 · 342 阅读 · 0 评论