摘要:
## 1.synchronized synchronized关键字是JVM提供的内置锁,是通过Monitor两种来实现的,分别是当其作用在类上和方法上时。 **类上:** - 测试代码 ``` public class Test { public void test() { synchronized 阅读全文
摘要:
## 1.JVM内存结构 Java代码是运行在虚拟机上的,而虚拟机在执行Java程序的过程中会把管理的**内存**划分为若干个不同的**数据区域**。其中有些区域是随着虚拟机进程的启动而存在,而有些区域则依赖用户线程的启动和结束而建立和销毁。而这些区域会被划分为五个区域,具体的如下: ![image 阅读全文
摘要:
## 1.原子性 #### 1.1 原子性的定义 原子性:原子性即是一个或者多个操作,要么全程执行,并且执行的过程中不被任何因素打断,要么全部不执行。 举个例子会更好理解:就像是我们去银行转账的时候,A给B转1000元,如果A的账户减少了1000之后,那么B的账户一定要增加1000。A的账户减钱,B 阅读全文
摘要:
## 1.什么是锁 针对于一个共享资源,如果有两个或两个以上的线程访问该资源,可能会导致该共享资源最后的结果与我们预期的结果不一致。比如一个共享变量,其中A线程将其从0循环加一十次,最后结果为十,但是再A线程对该变量循环加一的时候,有个B线程进行了改边该变量,那么可能最后A线程执行结束之后,其结果不 阅读全文
摘要:
1.同步容器 1.1 什么是同步容器 同步容器是指那些在容器内部已经同步化了,使我们在并发操作使用容器的时候不需要进行手动同步了。 1.2 同步容器的分类 同步容器可以分为两大类:普通类和内部类 普通类 主要是Vector、Stack、HashTable 普通类其实现的方式是通过在方法上添加sync 阅读全文
摘要:
1.说明 CountDownLatch是线程同步计数器:使线程能够在满足一些条件之后再执行。其是通过计数器实现的,当满足一个条件之后,计数器数量减一,直到其数量为0时,被挂起的线程恢复执行。 其内部维护了一个静态内部类Sync,该类继承了AbstractQueuedSynchronizer,这个类在 阅读全文
摘要:
1.ctl说明 ctl是线程池的状态控制,他是一个原子整数,主要记录当前线程池状态和当前线程池的工作数量。其实一个32位的整数,其中前三位记录的是当前线程池的状态,后29为记录的是当前工作的线程数量,也就是线程池目前支持的最大工作线程数量为0001 1111 1111 1111 1111 1111 阅读全文
摘要:
1.什么是线程池 随着多线程的大量使用,伴随着大量的线程创建与销毁等这些开销,为了减少这些开销,进行管理线程,线程池就应运而生了。因此线程池是一种基于池化思想管理和使用线程的机制,主要是为了方便管理线程,减少线程的频繁创建与销毁而浪费的资源。 2.线程池的使用 2.1 线程池的创建 线程池的创建方式 阅读全文
摘要:
1 问题描述 由于需求问题,这边要求查询出来的分组数据中的某一列的所有数据值都要展示出来,中间以逗号隔开,这边通过在网上查询,发现了存在group_concat()函数能够完美的满足这个需求,因此特意记录一下。 2 group_concat()函数的使用 2.1 使用语法 GROUP_CONCAT( 阅读全文