摘要: JMH -java Microbenchmark Harness 微基准测试,它是测的某一个方法的性能到底是好还是不好,换了方法的实现之后它的性能是好还是不好。 JMH的基本概念 Warmup 预热,由于JVM中对于特定代码会存在优化(本地优化),预热对于测试效果很重要 Mesurement 总共执 阅读全文
posted @ 2020-09-23 15:51 striver-sc 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 线程池 线程池它维护这两个集合,第一个是线程的集合,里面是一个一个的线程。第二个是任务的集合, 里面是一个一个的任务这叫一个完整的线程池。 线程池首先有几个接口,第一个是Executor,第二个是ExecutorService,后面是线程池的一个使用TreadPollExecutor。 Execut 阅读全文
posted @ 2020-09-23 15:48 striver-sc 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 并发容器 Queue实际上就是一个队列。 队列是为了完成任务的装载的这种取和装这里面最重要的是叫做阻塞队列,它的实现初衷就是为了线程池、高并发做准备。 Map Hashtable 所有的方法默认都是加synchronized的,多数的时候我们的程序只有一个线程在工作,所以这种情况下完全没有必要加sy 阅读全文
posted @ 2020-09-23 15:47 striver-sc 阅读(96) 评论(0) 推荐(0) 编辑
摘要: AQS AQS队列又可以称为CLH队列,AQS的核心就是共享的int类型值叫state AQS就是用CAS去操作head和tail,就是说用CAS操作代替了锁整条双向链表操作 java的四种引用:强、软、弱、虚 强引用 普通的引用NormalReference,普通的引用也就是默认的引用,默认的引用 阅读全文
posted @ 2020-09-23 15:44 striver-sc 阅读(125) 评论(0) 推荐(0) 编辑
摘要: ReentrantLock 可重入锁ReentrantLock ReentrantLlock是可以替代synchronized的,原来写synchronized的地方换上lock.lock(),加完锁之后需要注意的是记得lock.unlock()手动解锁。 lock.lock()写在try..... 阅读全文
posted @ 2020-09-23 15:27 striver-sc 阅读(235) 评论(0) 推荐(0) 编辑
摘要: volatile 保证线程可见性 MESI(它的本质上是使用了cpu的一个叫做高速缓存一致性协议) 缓存一致性原则 java里面有堆内存,堆内存是所有线程里面共享的内存,除了共享的内存之外,每个线程都有自己的专属区域,都有自己的工作内存,如果说在共享内存里有一个值的话,当我们某一个线程都要去访问这个 阅读全文
posted @ 2020-09-23 15:26 striver-sc 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 进程 假设硬盘上有一个简单的程序,这个程序叫QQ.exe,这个程序是一个静态的概念,当你双击它,弹出一个界面登陆进去,这时候叫做一个进程。进程相对于一个程序来说它是一个动态的概念。 线程 作为一个进程里面最小的执行单元他叫一个线程,用简单的话讲一个程序里不同的执行路径就叫做一个线程。 创建多线程方法 阅读全文
posted @ 2020-09-23 15:24 striver-sc 阅读(139) 评论(0) 推荐(0) 编辑