
java
文章平均质量分 57
jun_422
很好
展开
-
线程池如何设置合理参数
1.线程池的拒绝策略请你谈谈(1)是什么?等待队列也已经排满了,再也塞不下新的任务了同时,线程池的max也到达了,无法接续为新任务服务这时我们需要拒绝策略机制合理的处理这个问题.(2)JDK内置的拒绝策略①AbortPolicy(默认):直接抛出RejectedException异常阻止系统正常运行②CallerRunPolicy:"调用者运行"一种...原创 2021-11-15 08:45:00 · 554 阅读 · 0 评论 -
线程池ThreadPoolExecutor底层工作原理
原创 2021-11-14 03:45:00 · 425 阅读 · 1 评论 -
线程池ThreadPoolExecutor几个重要参数介绍
1.corePoolSize:线程池中的常驻核心线程数1).在创建了线程池后,当有请求任务来之后,就会安排池中的线程去执行请求任务,近视理解为今日当值线程2).当线程池中的线程数目达到corePoolSize后,就会把到达的任务放入到缓存队列当中.2.maximumPoolSize:线程池能够容纳同时执行的最大线程数,此值大于等于13.keepAliveTime:多余的空闲线程存活时间,当空间时间达到keepAliveTime值时,多余的线程会被销毁...原创 2021-11-13 08:00:00 · 448 阅读 · 0 评论 -
线程池ThreadPoolExecutor
1.为什么使用线程池,优势 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务加入队列,然后在线程创建后启动这些任务,如果线程超过了最大数量,超出的数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行.他的主要特点为:线程复用:控制最大并发数:管理线程.第一:降低资源消耗.通过重复利用自己创建的线程降低线程创建和销毁造成的消耗.第二: 提高响应速度.当任务到达时,任务可以不需要等到线程和粗昂就爱你就能...原创 2021-11-12 15:46:19 · 487 阅读 · 0 评论 -
BlockingQueue 阻塞队列
1.队列+阻塞队列(1)阻塞队列,顾名思义,首先它是一个队列,而一个阻塞队列在数据结构中所起到的作用大致如下图所示:当阻塞队列为空的时,从队列中获取元素的操作将会被阻塞。当阻塞队列是满的时,往队列中增加元素的操作将会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往队列中插入新的元素。同样,试图往已满的阻塞队列中添加新的元素的线程将会被阻塞,直到其他线程从队列中移除一个或多个元素或者完全清空队列后是队...原创 2021-10-31 19:30:00 · 322 阅读 · 0 评论 -
Synchronized和Lock有什么区别
1.原始构成Synchronized是关键字属于JVM层面,monitorenter(底层是通过monitor对象来完成,其实wait/notify等方法也依赖montior对象只有在同步块或方法中才能调用wait/notify等方法)Lock是具体类(java.util.concurrent.locks.Lock)是api层面的锁2.使用方法Synchronized不需要用户去手动释放锁,当Synchronized代码执行...原创 2021-10-30 17:00:00 · 108 阅读 · 0 评论 -
CountDownLatch、CyclicBarrier、Semaphore使用
1.CountDownLatch案例让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用线程会被阻塞。当计数器的值变为零时,因调用await方法被阻塞的线程会被唤醒,继续执行//未使用CountDownLatchpublic class CountDownLatchDemo { public static void main(String[] ar...原创 2021-10-29 10:39:08 · 183 阅读 · 0 评论 -
JUC多线程及并发笔记--公平锁和非公平锁、可重入锁、递归锁、自旋锁
1.公平锁和非公平锁(1) 是什么?公平锁: 是指多个线程按照申请锁的顺序来获取锁,类似排队打饭,先来后到Lock lock=new ReentrantLock(true);非公平锁:是指多个线程获取锁的顺序不是按照申请锁的顺序,有肯可能后申请的线程比先申请的线程优先获取锁,在高并发情况下,有可能会造成优先级翻转或者饥饿现象Lock lock=new ReentrantLock(); //Reentran...原创 2021-08-23 17:11:04 · 168 阅读 · 0 评论 -
JUC多线程及并发笔记--多线程下集合类不安全问题
1.ArrayList多线程下安全问题1).故障现象 java.util.ConcurrentModificationException 并发修改异常2).导致原因 List add()方法没有并发锁并发争抢修改导致。比如生活中花名册签名,一个人正在写,另一个同学过来抢夺,导致数据一致异常。并发修改异常3).解决方案(1) List lists=new Vector<>();(2) Lis...原创 2021-08-23 16:24:44 · 224 阅读 · 0 评论 -
JUC多线程及并发笔记--原子类(AtomicInteger)的ABA问题
原子类AtomicInteger的ABA问题谈谈?原子更新引用知道么?1.ABA问题产生CAS会导致ABA问题 CAS算法实现一个重要前提需要取出内存中某时刻的数据并在当下时刻比较并替换,那么在这个时间差类会导致数据的变化。比如说一个线程one从内存位置v取出A,这时另一个线程two也从内存中取出A,并且线程two进行了一些操作将值变成B,然后线程two又将v位置的数据变成A,这时候one线程进行CAS操作发现内容中仍然是A,然后线程one操作成功。 ...原创 2021-08-18 17:37:07 · 282 阅读 · 0 评论 -
JUC多线程及并发笔记--volatile问题详解
1.volatile是java虚拟机提供的轻量级的同步机制保证可见性package register;import java.util.concurrent.TimeUnit;class MyData{ volatile int number=0; public void addTo60(){ this.number=60; }}/** * 1.验证volatile可见性 * 1.1 假如int number=0;number变量之前没有添加原创 2021-08-06 17:18:51 · 145 阅读 · 0 评论 -
JUC多线程及并发笔记--CAS问题详解
1.CAS是什么?比较并交换:是JUC中方法 compareAndSet(int expect, int update) ,expect-物理内存中期望值,update-修改值import java.util.concurrent.atomic.AtomicInteger;/** * 1.CAS是什么? =====>compareAndSet * 比较并交换 */public class CASDemo { public static void main...原创 2021-08-06 16:55:36 · 157 阅读 · 0 评论 -
IntelliJ IDEA 的安装、配置与使用(四)-常用配置
IntelliJ IDEA 有很多人性化的设置我们必须单独拿出来讲解,也因为这些人性化的设置让那些 IntelliJ IDEA 死忠粉更加死心塌地使用它和分享它。进入设置界面:目录结构如下:1.Appearance & Behavior1.1 设置主题这里默认提供了三套主题:IntelliJ,Darcula,Windows。这里可以根据自己的喜好进行选择。...原创 2019-04-26 16:59:47 · 688 阅读 · 0 评论 -
IntelliJ IDEA 的安装、配置与使用(三)-IDEA创建项目工程
创建 Java 工程,运行 HelloWorld1.创建 Java 工程 Create New Project:创建一个新的工程 Import Project:导入一个现有的工程 Open:打开一个已有工程。比如:可以打开 Eclipse 项目。 Check out from Version Control:可以通过服务器上的项目地址 check out Github上...原创 2019-03-05 18:25:21 · 2161 阅读 · 0 评论 -
联合主键用Hibernate注解映射方式
联合主键用Hibernate注解映射方式主要有三种:第一、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将该类注解为@Embeddable,最后在主类中(该类不包含联合主键类中的字段)保存该联合主键类的一个引用,并生成set和get方法,并将该引用注解为@Id第二、将联合主键的字段单独放在一个类中,该转载 2015-01-12 09:48:21 · 520 阅读 · 0 评论