摘要: 通过一个简单的例子描述场景: 公平场景: 现在同时有10个人需要在饮水机接水, 但是饮水机每次只能被同一个人使用, 那么最先到的当然可以直接接水,后来的则肯定需要等待, AQS使用的策略是, 在接水的地方放一块黑板, 每个来接水的人需要在黑板上写下自己名字, 若自己前面没人则直接写上名字, 新来接水 阅读全文
posted @ 2020-01-07 19:53 蟹烟客 阅读(440) 评论(0) 推荐(0) 编辑
摘要: Atomic: 翻译为原子的, 其用途是用来解决原子问题, 那么什么是原子呢,解释为不可被中断的一个或一系列操作 举例理解: 在多线程情况下操作同一个Integer对象obj 线程A需要执行业务逻辑 获取对象obj,若obj==1则设置obj=2 线程B需要执行业务逻辑 获取对象obj,若obj== 阅读全文
posted @ 2020-01-07 16:03 蟹烟客 阅读(753) 评论(0) 推荐(0) 编辑
摘要: LockSupport解决了什么问题:LockSupport使用静态方法可以让线程在任意位置阻塞, 当然也可以重新唤醒 针对线程的阻塞和重新唤醒, 有很多种方法, 其中基础方式有以下几种(重入锁等高级封装方式不在此文考虑) 1.Object自有的wait和notify 但是这种方式使用起来比较麻烦, 阅读全文
posted @ 2020-01-07 14:35 蟹烟客 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 基础知识:synchronized锁可分为对象锁和类锁, 顾名思义对象锁就是给实例对象进行加锁, 类锁则是给类进行加锁 synchronized常见方式如下: 1 对象方法加锁(对象锁) public synchronized void test(){ //doSomething。。。。。 } 2 阅读全文
posted @ 2020-01-07 12:04 蟹烟客 阅读(158) 评论(0) 推荐(0) 编辑