摘要: 获取多线程的方式 1. 继承Thread 2. 实现Runnable接口 3. 实现Callable接口 带范型有返回值 FutureTask(Callable<V>) 4. 线程池 Callable返回值获取放在最后(futureTask.get()) 调用多次FutureTask仍然只执行一次, 阅读全文
posted @ 2019-09-16 19:21 要好好吃饭 阅读(1081) 评论(0) 推荐(0) 编辑
摘要: /** * 线程操作资源类 */ class MyResource{ // 控制生产者-消费者标志位 private volatile boolean FLAG = true; // 原子类,保证并发过程中线程安全 private AtomicInteger atomicInteger = new 阅读全文
posted @ 2019-09-14 14:10 要好好吃饭 阅读(328) 评论(0) 推荐(0) 编辑
摘要: synchronized和Lock区别 原始构成 - sychronized是关键字属于JVM层面的, - monitorenter、monitorexit(底层是通过monitor对象来完成的,其实wait/notify方法也依赖于monitor对象,只有在同步块或者同步方法中才能调用wait/n 阅读全文
posted @ 2019-09-13 12:55 要好好吃饭 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 阻塞队列 用在哪? 生产者消费者模式 传统版 阻塞队列版 线程池 消息中间件 1、传统线程生产者-消费者模式是什么? 2、传统生产者-消费者模式代码验证2.0版本 判断使用while不会出现虚假唤醒问题 /** * Lock 传统生产者-消费者模式 代码验证2.0版本 * @Author: 小海 * 阅读全文
posted @ 2019-09-11 13:34 要好好吃饭 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 1、阻塞队列-Synchronous是什么? Synchronous阻塞队列是一个不存储元素的队列,即单个元素队列。 2、Synchronous阻塞队列代码验证 public class SynchronousQueueDemo { public static void main(String[] 阅读全文
posted @ 2019-09-10 01:43 要好好吃饭 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 场景:海底捞候客区、医院体检候客区、银行候客区 手动挡换成自动挡 集合除了ArrayList、linkedList还用过哪些?-> CopyOnWriteArrayList、BlockingQueue 一、阻塞队列是什么? 阻塞队列首先是一个队列,当队列是空的时候,从队列获取元素的操作将会被阻塞,当 阅读全文
posted @ 2019-09-08 20:12 要好好吃饭 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 等待/通知机制,在Java中主要有两种方式: 一是基于wait/notify方法结合synchronized关键字来实现 二是Condition结合Lock来实现 Condition理解为条件队列 Condition是在java1.5才出现。它用来替换传统的 wait(), notify()实现线程 阅读全文
posted @ 2019-09-08 14:00 要好好吃饭 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 一、CountDownLatch - 闭锁/做减法 人都走了才关门 使一个线程等待其他线程各自执行完毕后再执行; 是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待的线程就可以恢复工作了。 // 阅读全文
posted @ 2019-09-07 17:51 要好好吃饭 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 独占锁(排他锁/写锁/X锁/行级):指该锁一次只能被一个线程锁持有,只允许该线程写与读,不允许其他线程加任何锁进行读和写,ReentrantLock和sync而言都是独占锁。 共享锁(读锁/S锁/表级):指该锁可被多个线程所持有,直到释放所有S锁才可以获取排他锁。 读写锁:ReentrantRead 阅读全文
posted @ 2019-09-05 19:13 要好好吃饭 阅读(1561) 评论(0) 推荐(0) 编辑
摘要: 自旋锁spinLock是指尝试获取锁的线程不会立即阻塞, 而是采用循环的方式去尝试获取锁。 优点是减少线程上下文切换的消耗; 缺点是循环会消耗CPU,会导致ABA问题-[解决方案:带时间戳的原子引用AtomicStampedReference]。 unsafe.getAndAddInt(Object 阅读全文
posted @ 2019-09-04 15:19 要好好吃饭 阅读(217) 评论(0) 推荐(0) 编辑