摘要:
java的线程池的工作队列用到了并发队列。队列一般用在生产者消费者的场景中,处理需要排队的需求。 你好,我是李福春,今天的问题是: ConcurrentLinkedQueue和LinkedBlockingQueue有什么区别? 答:都是java提供的并发安全队列,都提供了等待性的操作,take,pu 阅读全文
摘要:
java提供的线程池可以简化线程管理,提高线程资源的利用率。 大家好,我是李福春,今天的题目是: Java提供了哪些线程池?如何设置合适的线程池大小? 答:java.util.concurrent包中提供了5种线程池,从简单到复杂列举如下: 一,newSingleThreadExecutor() , 阅读全文
摘要:
java.util.concurrent包提供了大量的并发工具。 大家好,我是李福春,今天的题目是: java提供的并发工具有哪些? 答:java.util.concurrent工具包中提供的工具分4大类。 一, 同步工具,CountDownLatch, CyclicBarrier , Semaph 阅读全文
摘要:
死锁是并发编程的难点问题。 大家好,我是李福春,我在准备面试,今天的问题是: 死锁是如何产生的?如何定位?如何修复和避免? 答:死锁是一种特定的程序状态,一般是多线程场景下两个以上的线程互相持有对方需要的锁而处于的永久阻塞状态。 定位方法:jstack分析线程的栈信息可以定位出来; 或者使用Thre 阅读全文
摘要:
线程是并发编程的基础元素,是系统调度的最小单元,现代的jvm直接对应了内核线程。为了降低并发编程的门槛,go语言引入了协程。 你好,我是李福春,我在准备面试,今天的题目是? 一个线程两次调用start()方法会发生什么? 答:线程两次调用start()方法会抛出IllegalThreadStateE 阅读全文