摘要: 选择题 算法题 1.括号匹配问题: 给定字符串s,s只包含 '[' '{' '(' ')' '}' ']' 六种字符 判断s的是否合法。 类似这种 s="[{]}"不合法 思路:遇到左括号入栈,遇到右括号则出栈, 判断出栈的左括号,与当前的右括号是否匹配? 匹配则继续直到结束,字符串遍历完了就返回t 阅读全文
posted @ 2021-04-23 00:28 wsZzz1997 阅读(149) 评论(0) 推荐(0) 编辑
摘要: Semaphore 相当于一个信号灯,对自己创建的线程或者线程池创建的线程进行限流的作用。 需要手动acquire() 和 release() 使得同时进行的thread的数量保证在一定的范围内(Semaphore创建对象的初始大小) ThreadPool 创建线程,已经线程的复用。 控制线程的总量 阅读全文
posted @ 2021-04-21 14:21 wsZzz1997 阅读(75) 评论(0) 推荐(0) 编辑
摘要: 概念和意义 尝试获取锁的线程不会立即阻塞(no wait),而是采用循环的方式去尝试获取锁,这样的好处是减少线程上下文切换的消耗,缺点是循环消耗cpu unsafe中的源码 //unsafe.getAndAddInt putlic final int getAndAddInt(Object var1 阅读全文
posted @ 2021-04-18 15:11 wsZzz1997 阅读(58) 评论(0) 推荐(0) 编辑
摘要: ReentrantLock和synchronized默认都是非公平锁 顾名思义: 公平锁就是根据先来后到的顺序,给予申请的线程权力,不能插队 非公平锁就是不完全按照申请锁的顺序,给予每个线程相同的对待。 根据线程的优先级安排情况,也就是会出现插队现象 公平锁:ReentrantLock(true) 阅读全文
posted @ 2021-04-18 15:06 wsZzz1997 阅读(76) 评论(0) 推荐(0) 编辑
摘要: ReentrantLock和synchronized都是可重入锁 通俗来说就是拿着外层的锁,可以进入内部拥有相同锁的其他代码块。 可以拿多把锁,但是必须都解锁才能完全解开。 递归性质的上锁开锁,因此也叫递归锁。 阅读全文
posted @ 2021-04-18 14:58 wsZzz1997 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 读写锁 ReentrantReadWriteLock 读,可多线程读 写,只允许一个写 读读共存 读写不共存 写写不共存 写操作:原子+独占,整个过程必须是一个完整的统一体,中间不需被分割打断 // 资源类 class Mycache{ // 缓存的一般加volatile private volat 阅读全文
posted @ 2021-04-18 14:55 wsZzz1997 阅读(25) 评论(0) 推荐(0) 编辑
摘要: CountDownLatch 每次当线程调用countDownLatch.countDown()方法时,会对计数器减1,减到0,countDownLatch.await()放行 public class CountDownLatchTest { public static void main(Str 阅读全文
posted @ 2021-04-18 14:52 wsZzz1997 阅读(42) 评论(0) 推荐(0) 编辑
摘要: String的两种创建方式: 1.String s1 = "abc" 首先去常量池找"abc",如果不存在,就在常量池创建"abc",然后在栈中开辟s1,存放"abc"的内存地址 2.String s2=new String("abc") 首先去常量池找"abc",如果不存在,就创建"abc",然后 阅读全文
posted @ 2021-04-11 15:27 wsZzz1997 阅读(32) 评论(0) 推荐(0) 编辑
摘要: /** * 生产者(Productor)将产品交给店员(Clerk),消费者(Customer)从店员取走产品 * 店员只能持有固定的数目产品(例如:20) * 如果店员的产品满了,会通知生产者停一下。 * 如果店员的产品没了,会通知消费者等一下。 * 是多线程问题,多个消费者,多个生产者,共享数据 阅读全文
posted @ 2021-04-10 17:28 wsZzz1997 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 一、程序进程和线程 程序:一段静态的代码。由某种计算机语言编写,为完成特定的任务 进程:运行中的程序,或者程序的一次运行。完成内存分配任务 线程:进程中的一个执行路径。cpu调度最小单位 二、创建方式 1.继承Thread类,重写run方法,调用对象的start方法 2.实现Runnable接口,实 阅读全文
posted @ 2021-04-09 19:40 wsZzz1997 阅读(70) 评论(0) 推荐(0) 编辑