2022
07-11
07-11
Java面试题冲刺第二十五天--并发编程3
目录面试题1:你了解线程池么?简单介绍一下。追问1:连接池和线程池是一个意思么?有什么区别?不同点面试题2:线程池中核心线程数量大小你是怎么设置的?追问1:核心线程数量过大或过小会造成什么后果?面试题3:线程池都有哪些状态呀?追问1:什么条件下会进入TERMINATED状态总结面试题1:你了解线程池么?简单介绍一下。java提供的一个java.util.concurrent.Executor接口的实现用于创建线程池。线程池是一种多线程处理形式,...
继续阅读 >
目录面试题1:简单说下你对线程和进程的理解?正经回答:深入追问:追问1:那进程和线程有哪些区别呢?面试题2:守护线程和用户线程的区别?正经回答:面试题3:什么是线程死锁?正经回答:深入追问:追问1:形成死锁的四个必要条件是什么? 追问2:我们该如何避免死锁?追问3:死锁避免和死锁预防有啥不同?总结面试题1:简单说下你对线程和进程的理解?正经回答:进程一个在内存中运行的应用程序。每个进程都...
目录面试题1:说一下你对ReentrantLock的理解?CAS:AQS:追问1:你认为ReentrantLock相比synchronized都有哪些区别?面试题2:解释一下公平锁和非公平锁?面试题3:能详细说一下CAS具体实现原理么?追问1:那CAS的缺陷有哪些呢?1.ABA:2.自旋消耗资源:3.多变量共享一致性问题:追问2:讲一下什么是ABA问题?怎么解决?总结面试题1:说一下你对ReentrantLock的理解?ReentrantLock是JDK1.5引入的,它拥有与synchronized相同的...
一、Fork/Join框架的理解ForkJoinTask类属于java.util.concurrent包下;ForkJoinTask类下有2个子类,分别为RecursiveTask和RecursiveAction类;(lz示例中使用RecursiveTask类进行重写compute()方法进行实现数值的累加计算)ForkJoinTask类将一个大的任务拆分成多个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并进行输出。二、Fork/Join框架使用示例示例场景:对数值进行累加计算;注:示例中使用F...
目录一、ConcurrentLinkedQueue介绍二、构造方法三、入队 四、出队五、总结一、ConcurrentLinkedQueue介绍并编程中,一般需要用到安全的队列,如果要自己实现安全队列,可以使用2种方式:方式1:加锁,这种实现方式就是我们常说的阻塞队列。方式2:使用循环CAS算法实现,这种方式实现队列称之为非阻塞队列。从点到面,下面我们来看下非阻塞队列经典实现类:ConcurrentLinkedQueue(JDK1.8版)ConcurrentLinkedQueue是一个...
目录一、LockSupport类的属性二、LockSupport类的构造函数三、park(Objectblocker)方法和park()方法分析四、parkNanos(Objectblocker,longnanos)方法和parkNanos(longnanos)方法分析五、parkUntil(Objectblocker,longdeadline)方法和parkUntil(longdeadline)方法分析六、setBlocker(Threadt,Objectarg)和getBlocker(Threadt)方法分析七、unpark(Threadthread)方法分析八、LockSupport优点一、LockSupport类...
简介同步容器主要分两类,一种是Vector这样的普通类,一种是通过Collections的工厂方法创建的内部类虽然很多人都对同步容器的性能低有偏见,但它也不是一无是处,在这里我们插播一条阿里巴巴的开发手册规范:高并发时,同步调用应该去考量锁的性能损耗。能用无锁数据结构,就不要用锁;能锁区块,就不要锁整个方法体;能用对象锁,就不要用类锁。可以看到,只有在高并发才会考虑到锁的性能问题,所以在一些小而全的系统中,同步容...
1.CountDownLatch 1.2.示例:班长锁门问题问题描述:假如有7个同学晚上上自习,钥匙在班长手上,并且要负责锁门。班长必须要等所有人都走光了,班长才能关灯锁门。这6个同学的顺序是无序的,不知道它们是何时离开。6个同学各上各的自习,中间没有交互。假如说6个学生是普通线程,班长是主线程,如何让主线程要等一堆线程运行完了,主线程才能运行完成呢。publicclassCountDownLatchDemo{publicstaticvoidmain(String[]...
简单使用Lock锁 Java5中引入了新的锁机制——java.util.concurrent.locks中的显式的互斥锁:Lock接口,它提供了比synchronized更加广泛的锁定操作。Lock接口有3个实现它的类:ReentrantLock、ReetrantReadWriteLock.ReadLock和ReetrantReadWriteLock.WriteLock,即重入锁、读锁和写锁。lock必须被显式地创建、锁定和释放,为了可以使用更多的功能,一般用ReentrantLock为其实例化。为了保证锁最终一定会被释放(可能...